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 : 170
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 : 165
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 : 155
Taille : 87,3 Ko


Nom : 4.JPG
Affichages : 146
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