Создание динамического массива с помощью оператора new

 

Создать динамический массив в C++ просто. Необходимо указать оператору new тип элементов массива и их количество. В соответствии с требованиями синтаксиса должно быть указано имя типа, а за ним — количество элементов в квадратных скоб­ках.

Например:

// блок из 10 значений типа int

int * psome = new int [10];

 

Оператор new возвращает адрес первого элемента выделенного блока. В приведен­ном примере это значение присваивается указателю psome.

При выделении памяти для динамических массивов необходимо следить за индексами при доступе к элементам массива. Нельзя допускать их выход за пределы выделенной памяти.

Общая форма выделения и присвоения области памяти для массива имеет следую­щий вид:

type_name *pointer_name =

new type_name[num_elements] ;

 

В результате вызова оператора new резервируется блок памяти, достаточный для хранения элементов num_elements типа type_name, а указатель pointer_name уста­навливается на первый элемент блока. Как можно видеть, pointer_name во многих случаях можно использовать как имя массива.

Оператор new позволяет реализовывать механизм запроса необходимого количества памяти в процессе работы программы. Другой стороной данного механизма является оператор delete, который позволяет высвободить запрошенную память ("вернуть" в общую область) после того, как ее использование завершено. Это — важный шаг к наиболее эффектив­ному использованию памяти. Память, которая возвращается, или высвобождается, мо­жет быть повторно использована другими модулями программы.

Если для создания массива используется оператор new, следует употребить другую форму оператора delete, которая указывает, что высвобождается именно память, от­веденная для массива:

// высвобождается память, отведенная для

// динамического массива

delete [ ] psome;

 

Квадратные скобки указывают, что необходимо высвободить память, отведенную для целого массива, а не только для элемента, на который указывает указатель.

 

Кратко перечислим правила, которые необходимо соблюдать при применении опе­раторов new и delete:

ü Не используйте оператор delete для высвобождения памяти, которая не выделя­лась с помощью оператора new.

ü Не используйте оператор delete для освобождения одного и того же блока па­мяти два раза подряд.

ü Если для выделения памяти массиву был применен оператор new [ ], следует ис­пользовать оператор delete [ ].

ü Если для выделения памяти единственному элементу был применен оператор new, следует использовать оператор delete (без квадратных скобок).

 








Дата добавления: 2016-04-22; просмотров: 582;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.