删除指针后未擦除内存内容(在一个简单的示例中)

memory content not erased after deleting my pointer (on a simple example)

本文关键字:一个 简单 指针 擦除 内存 删除      更新时间:2023-10-16

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

删除操作后,它可能会也可能不会打印相同的值。所以你观察到的只是一种未定义的行为。

相关文章: