Удаление указателя (или, наоборот, удаление того, на что он указывает) означает
delete p;
delete[] p; // for arrays
p
было выделено до этого заявления, как
p = new type;
Это может также относиться к использованию других способов динамического управления памятью, таких как free
free(p);
, который был ранее выделен с помощью malloc или calloc
p = malloc(size);
Последний чаще называют «освобождение», тогда как первый чаще называют «удаление». delete
используется для классов с деструктором, поскольку delete
будет вызывать деструктор в дополнение к освобождению памяти. free
(и malloc, calloc и т. Д.) Используется для базовых типов, но в C ++ для них также могут использоваться new и delete, поэтому нет особых причин использовать malloc в C ++, за исключением соображений совместимости.