删除我的指针后内存内容没有被删除(在一个简单的例子中)
memory content not erased after deleting my pointer (on a simple example)
这是我遇到的一个问题的简单示例:
我创建了一个整数指针(值 5),我打印了它指向的内存盒的指针(因此是地址)及其内容 (5)。
然后我删除那个指针,应该是删除内存盒中有指针地址的内容。
但是当我打印 a 及其内容时,地址仍然存在。尽管如此,内容保持不变 (5),就好像 a 没有被删除一样......
你能解释一下吗? :-)
#include <iostream>
int main()
{
int * a = new int(5);
std::cout<< a << std::endl;
std::cout<< "--------" << std::endl;
delete a;
std::cout<< a << std::endl;
std::cout<< *a << std::endl;
// end of my main
return 0;
}
结果:
0x7fff28403a90
--------
0x7fff28403a90
5
删除操作后可能会或可能不会打印相同的值。因此,您所观察到的只是一种未定义的行为。
这是我遇到的一个问题的简单示例: 我创建了一个整数指针(值 5),我打印了它指向的内存盒的指针(因此是地址)及其内容 (5)。
然后我删除那个指针,应该是删除内存盒中有指针地址的内容。 但是当我打印 a 及其内容时,地址仍然存在。尽管如此,内容保持不变 (5),就好像 a 没有被删除一样...... 你能解释一下吗? :-)
#include <iostream>
int main()
{
int * a = new int(5);
std::cout<< a << std::endl;
std::cout<< "--------" << std::endl;
delete a;
std::cout<< a << std::endl;
std::cout<< *a << std::endl;
// end of my main
return 0;
}
结果:
0x7fff28403a90
--------
0x7fff28403a90
5
删除操作后可能会或可能不会打印相同的值。因此,您所观察到的只是一种未定义的行为。