Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 56

Для переменных встроенных типов и небольших массивов вполне доста­точно использовать локальное распределение. Но если вы собираетесь рабо­тать с большими массивами, структурами или классами, имеет смысл при­бегнуть к динамическому распределению памяти из «кучи». Эта память складывается из свободной оперативной памяти и свободного пространства на жестком диске. Иными словами, в типичной Windows-системе вы легко можете иметь до 100 Мб динамически распределяемой памяти. Достоинство такого подхода — практически неограниченный размер виртуальной памяти, доступной вашим программам. Недостаток заключается в том, что исполь­зование динамически распределяемой памяти требует некоторых накладных расходов и обращение к ней происходит немного медленнее, чем к памяти из стека. В большинстве программ эти накладные расходы можно не при­нимать во внимание. Работа с динамической памятью предъявляет также повышенные требования к программисту — не настолько большие, как вы можете подумать, но все же.

Динамическое распределение (dynamic allocation) означает, что па­мять для объектов выделяется в «куче».

Под «кучей» (heap) в Windows-программах понимается вся виртуаль­ная память компьютера.

Динамическое размещение объектов и указатели

В программах на Си++ динамическое распределение памяти осущест­вляется с помощью оператора new. Я намеревался рассказать об операторе new немного позже, но вам нужен небольшой пример, чтобы можно было продолжить обсуждение указателей. В предыдущей главе я рассказывал о структурах и использовал в качестве примера структуру mailingListRecord. Размещение структуры в стеке выгля­дит следующим образом:

mailingListRecord listArray; strcpy(listArray.firstName, "Ian"); strcpy(listArray.lastName, "Spencer"); // и т.д.

Web-дизайн (с) 2010 All rights reserved