我目前正在学习C ++,而且我正在体验本地的对象范围。
如果我理解正确,请使用以下代码:
void stepOne() {
TestClass t1;
t1.thisIsAInt = 2;}
一旦我们退出stepOne方法的范围,应该清除t1对象的内存。
现在,我想测试一下,所以使用调试器我得到了对象的地址,一旦我回到main
,我就在调试器的地址上做了一个指针。 / p>
我很惊讶地发现指针仍然指向我之前创建的同一个对象。
通常情况下,我的理解是,自从我们离开范围后,该对象将被清除内存。
现在,
答案 0 :(得分:4)
一旦对象超出范围并被破坏(在析构函数中添加断点以确保它是),您就不应该引用该对象拥有的 所拥有的内存。
仅仅因为对象被破坏并不意味着它所占用的记忆只会消失"。内存仍然存在,并且在被另一个对象重用之前不会更改其内容。清理内存需要(一点点)时间,每秒执行数千次会突然变得非常昂贵。