我正在阅读的一本C ++书指出,当使用delete
操作符删除指针时,指向该位置的内存将被“释放”,并且可以覆盖。它还指出,指针将继续指向相同的位置,直到将其重新分配或设置为为止NULL
。
但是在Visual Studio 2012中;事实并非如此!
例:
#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;
}
当我编译并运行该程序时,将得到以下输出:
ptr = 0050BC10
ptr = 00008123
Press any key to continue....
显然,调用delete时指针指向的地址会更改!
为什么会这样呢?这与Visual Studio特别有关吗?
而且,如果delete仍然可以更改其指向的地址,那么为什么delete不会自动将指针设置NULL
为某个随机地址呢?