Каждый раз, когда вы звоните new[]
, вы должны вызывать delete[]
на указателе, чтобы освободить. Каждый раз, когда вы звоните new
, вы должны звонить delete
.
В вашем случае вы звоните new
дважды. array[1]
содержит указатель на класс, выделенный с new
, поэтому он должен быть освобожден с delete
. И array
- указатель на массив, выделенный с помощью new[]
, поэтому он должен быть освобожден с помощью delete[]
.
Конечно, вы могли бы избавить себя от этой головной боли, просто объявив массив следующим образом:
Class array[8];
array[1] = Class(1,2);
отсутствие динамического выделения памяти означает, что нет необходимости вызывать delete
.
Или используя std::vector
:
std::vector<Class> array(8);
array[1] = Class(1,2);