Невозможно удалить один элемент, поскольку delete
необходимо использовать для удаления той же памяти, которая была выделена.
Это сбой, потому что указатель, который возвращает new
, должен быть тем же, который используется для вызова delete
.
Увеличение указателя и использование этого означает, что программа больше не видит другую бухгалтерскую информацию (возможно, сохраненную непосредственно перед указателем, который new
вернул)
Также вы должны использовать delete[]
удалить массив.По этой причине следующее поведение не определено:
char * arr = new char[10];
delete arr;
Должно быть:
char * arr = new char[10];
delete[] arr;