Bonjour

On sait tous que quand on fait une allocation dynamique,
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Nom : 1.JPG
Affichages : 171
Taille : 73,6 Ko
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:
Nom : 2.JPG
Affichages : 166
Taille : 69,1 Ko

Ensuite, j'ai fait le truc correct:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.

Nom : 3.JPG
Affichages : 156
Taille : 87,3 Ko


Nom : 4.JPG
Affichages : 147
Taille : 78,0 Ko

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