В общем, вам следует избегать распределения памяти в C ++.Большинство (не все) массивы можно сделать с std::vector
лучше, чем вы собираетесь делать самостоятельно, особенно если вы здесь делаете ошибку.
Вы выделяете, скажем, intNew
и intNew[i]
.Затем вы delete [] intNew;
(скобки здесь необходимы, опускание их - ошибка), без delete []
ни одного из intNew[i]
.Выделенные одномерные массивы теперь являются утечками памяти и не могут быть освобождены, потому что вы потеряли все ссылки на них.Ни C, ни C ++ обычно не поставляются с сборщиком мусора.
Функции выделения памяти в C работают только с памятью.Они не являются типобезопасными и не вызывают конструкторы или деструкторы.Они могут использоваться с типами данных, которые не требуют ни того, ни другого, но вы должны убедиться, что они не делают ни того, ни другого.(Возможно malloc
память и использование размещения new
для создания там объектов, но это более продвинуто.)
Функции выделения памяти в C ++ работают с памятью и объектами.В основном они безопасны от типов и вызывают конструкторы и деструкторы.Не все объекты можно безопасно перемещать, поэтому нет эквивалента malloc
.Сложность в том, что вы должны сопоставить new
с delete
и new[]
с delete[]
.У вас есть эта ошибка в вашем коде: delete intNew;
должно быть delete [] intNew;
.