Bonjour,

J'ai vraiment chercher des heures sans comprendre pourquoi j'ai ce problème:

J'ai un code ci-dessous où j'alloue dynamiquement un tableau de 100*1024 entiers, ensuite j'ai un deuxième pointeurs ptr2 qui pointe à l'adresse du tableau précédement alloué avec ptr.

Ensuite j'alloue une nouvelle zone mémoire avec ptr (donc ptr2 pointe bien l'ancienne zone). Mais lorsque j'appelle delete[] ptr2, rien n'est désallouer ?

Quelqu'un saurait-il m'expliquer pourquoi.

Merci

Algernon


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
int* ptr = new int[100 * 1024];
// initialisation du tableau ptr
int*ptr2 = ptr;
 
ptr = new int[50 * 1024];
 
delete [] ptr2; // Ici est le problème, pourquoi mon tableau n'est pas désallouer??