4 pièce(s) jointe(s)
Différence entre delete et delete []
Bonjour
On sait tous que quand on fait une allocation dynamique,
Code:
int *o=new int[100];
Il faut désallouer avec delete [] et non delete. Alors moi, j'ai essayé en débug de voir ce qu'il se passe avec visual studio. J'ai tout d'abord linké le programme avec la version release de la CRT. Ensuite, j'ai fait ceci:
Code:
1 2 3 4 5
|
int *o=new int[100];
for(int j=0;j<100;j++)
o[j]=3;
delete o; |
Ce qui est pas bon. Quand j'alloue le tableau de 100 int de valeur 3, je vois ceci:
Pièce jointe 77973
On voit bien le tableau avec les 100 int. Ensuite, quand je fais le delete, je vois que tous les int sont désalloués. Moi, je m'attendais à ce que seule la première adresse, celle pointée par o soit désallouée.
Une fois le delete executée, voila ce que je vois:
Pièce jointe 77974
Ensuite, j'ai fait le truc correct:
Code:
1 2 3 4 5
| int *o=new int[100];
for(int j=0;j<100;j++)
o[j]=3;
delete [] o; |
Et dans la première image, on voit l'allocation, et dans la deuxième, on voit la désallocation.
Pièce jointe 77975
Pièce jointe 77976
On voit qu'il n'y a aucune différence. Je ne comprends pas. Comment faire pour voir la différence entre delete et delete[] ?
Merci