我定义了一种方法来返回引用。我知道没有任何删除 pt 的设置,但是当我运行代码时,它提示调用“~Object”。那么这段代码有什么问题吗?为什么我不删除指针,但解构器仍然被调用?如果被调用,在这种情况下是否存在内存问题? 假设指针和引用都指向一个对象,那么一个是解构器,是否需要删除指针?
#include <iostream>
#include "Object.h"
using namespace std;
Object &testreturn(){
Object *pt=new Object();
return *pt;
}
int main() {
Object o=testreturn();
return 0;
}
最佳答案
是的,此示例中存在内存泄漏。问题是您的 o
对象是您的函数分配的对象的拷贝,当它离开作用域时将被自动删除。原件仍在内存中等待删除。
话虽如此,这个例子没有理由进行动态分配。相反,考虑一下:
Object testreturn(){
Object pt;
return pt;
}
关于c++ - 此 C++ 代码示例中是否存在关于指针的内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20026294/