Chaque fois que vous appelez le new[]
, vous devez appeler le delete[]
sur le pointeur pour libérer l'emplacement. Chaque fois que vous appelez new
, vous devez appeler delete
.
Dans votre cas, vous appelez deux fois le new
. array[1]
contient un pointeur vers une classe allouée avec new
, il doit donc être désalloué avec delete
. Et array
est un pointeur vers un tableau alloué avec new[]
, il doit donc être libéré avec delete[]
.
Bien sûr, vous pourriez vous évite ce mal de tête par une simple déclaration du tableau comme celui-ci:
Class array[8];
array[1] = Class(1,2);
pas d'allocation de mémoire dynamique signifie pas besoin d'appeler delete
.
Ou en utilisant std::vector
:
std::vector<Class> array(8);
array[1] = Class(1,2);
Est-ce un code valide? Je n'ai jamais vu l'utilisation du mot-clé "Class" de cette manière. – prabhakaran
@prabhakaran: 'Class' n'est pas un mot-clé; 'class' est. Les noms sont sensibles à la casse en C++. –
(bien que techniquement 'class' n'est pas un nom, c'est un mot-clé ... * soupir *) –