C++ livre, j'ai lu stipule que, lorsqu'un lien est supprimé à l'aide de l' delete
opérateur de la mémoire à l'endroit qu'il désigne est "libéré" et il peut être remplacé. Il stipule également que le pointeur de la continuent de pointer vers le même endroit jusqu'à ce qu'il est réaffecté ou un ensemble d' NULL
.
Dans Visual Studio 2012; cependant, cela ne semble pas être le cas!
Exemple:
#include <iostream>
using namespace std;
int main()
{
int* ptr = new int;
cout << "ptr = " << ptr << endl;
delete ptr;
cout << "ptr = " << ptr << endl;
system("pause");
return 0;
}
Quand j'ai compiler et exécuter ce programme, j'obtiens le résultat suivant:
ptr = 0050BC10
ptr = 00008123
Press any key to continue....
Clairement l'adresse que le pointeur pointe vers des changements lors de la supprimer est appelé!
Pourquoi est-ce arrivé? Est ce que cela a quelque chose à faire avec Visual Studio?
Et si supprimer pouvez changer l'adresse qu'il désigne de toute façon, pourquoi ne pas supprimer automatiquement le pointeur à l' NULL
au lieu d'une adresse au hasard???