Операция new с массивами

Если "имя" это массив, то возвращаемый new указатель указывает на первый элемент массива. При создании с помощью new многомерных массивов следует указывать все размерности массива:

mat_ptr = new int[3][10][12]; // так можно

mat_ptr = new int[3][][12]; // нельзя

...

delete [] mat_ptr; //освободить память, занятую массивом,

//на который указывает mat_ptr

Инициализаторы с операцией new

Другим преимуществом операции new по сравнению с malloc является возможность инициализации. При отсутствии явных инициализаторов объект, создаваемый new, содержит непредсказуемые данные ("мусор"). Объекты, распределяемые new, за исключением массивов, могут инициализироваться соответствующим выражением в скобках:

int_ptr = new int(3);

Для очистки выделенной памяти операцией new можно использовать функцию meset(), объявленную в <mem.h>. Ей передаются 3 параметра: адрес очищаемой памяти, символ для очистки, количество байт.

#include <string.h>

#include <stdio.h>

#include <mem.h>

int main(void) {

char buffer[] = "Hello world\n";

printf("Буфер до memset: %s\n", buffer);

memset(buffer, '*', strlen(buffer) - 1);

printf("Буфер после memset: %s\n", buffer);

return 0;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: