C ++对象泄漏

时间:2017-04-01 15:19:13

标签: c++ pointers

我目前正在学习C ++,而且我正在体验本地的对象范围。

如果我理解正确,请使用以下代码:

void stepOne() {
TestClass t1;
t1.thisIsAInt = 2;}

一旦我们退出stepOne方法的范围,应该清除t1对象的内存。

现在,我想测试一下,所以使用调试器我得到了对象的地址,一旦我回到main,我就在调试器的地址上做了一个指针。 / p>

我很惊讶地发现指针仍然指向我之前创建的同一个对象。

通常情况下,我的理解是,自从我们离开范围后,该对象将被清除内存。

现在,

  • 我不理解吗?
  • 获得它的地址是否使它不离开范围?
  • 是操作系统的空闲内存,还没有清除吗? (填充零)
  • 如果我将指针传递给stepOne中的某个函数,那么在我离开示波器后它是否仍然被清除? (我知道我可以使用智能指针,以确保它只能在本地范围内存活)

1 个答案:

答案 0 :(得分:4)

一旦对象超出范围并被破坏(在析构函数中添加断点以确保它是),您就不应该引用该对象拥有的 所拥有的内存。

仅仅因为对象被破坏并不意味着它所占用的记忆只会消失"。内存仍然存在,并且在被另一个对象重用之前不会更改其内容。清理内存需要(一点点)时间,每秒执行数千次会突然变得非常昂贵。