删除我的指针后内存内容没有被删除(在一个简单的例子中)[重复]

Posted

技术标签:

【中文标题】删除我的指针后内存内容没有被删除(在一个简单的例子中)[重复]【英文标题】:memory content not erased after deleting my pointer (on a simple example) [duplicate] 【发布时间】:2015-06-15 01:00:18 【问题描述】:

这是我遇到的一个问题的简单示例: 我创建一个整数指针(值 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

【问题讨论】:

“那我删除那个指针,应该是删除内存case里面有指针地址的内容。”你从哪里听到的?跨度> 这个著名的问答不是直接复制的,但出于同样的原因,它是完美的答案。因此,我咬紧牙关,将其选为副本。 【参考方案1】:

删除操作后可能会或可能不会打印相同的值。因此,您所观察到的只是未定义的行为。

【讨论】:

非常感谢!我明白了,当它释放内存时,它不会用其他东西替换内容,但实际上它会保留内容,但有人可以随时写入该地址。 未定义的行为并不意味着它应该崩溃;这意味着您将获得不确定的结果。 我明白了,谢谢斯蒂芬!

以上是关于删除我的指针后内存内容没有被删除(在一个简单的例子中)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在没有虚拟析构函数的情况下删除基类指针会导致内存泄漏吗?

Python在删除字典中的项目后回收内存

指针在删除它并在c ++中再次分配新内存后是不是获得相同的内存地址?

为啥我的指针在删除后仍然指向一个地址?

空悬指针和野指针(Dangling pointer and wild pointer)

cvrelease 会删除分配的内存吗?