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 int *o=new int[100];
Ce qui est pas bon. Quand j'alloue le tableau de 100 int de valeur 3, je vois 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;
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:
Ensuite, j'ai fait le truc correct:
Et dans la première image, on voit l'allocation, et dans la deuxième, on voit la désallocation.
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;
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
Partager