删除指针后内存内容没有删除(在一个简单的例子中)

时间:2015-06-15 01:00:19

标签: c++ pointers memory-management

以下是我遇到的一个简单示例: 我创建一个整数(值为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

1 个答案:

答案 0 :(得分:0)

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