c++ - 此 C++ 代码示例中是否存在关于指针的内存泄漏?

标签 c++ pointers

我定义了一种方法来返回引用。我知道没有任何删除 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/

相关文章:

c++ - 捕获任何 Windows 应用程序的屏幕?

c++ - 如何使用 Eigen 库将大型二维数组转换为稀疏矩阵?

c - 指针取消引用顺序的段错误

c - 从函数返回 this 指针

c++ - noinst_libfoo_ladir 中的 ladir 是什么?

用于 win32 或 C++ 的 C#

c++ - ASM I/O 引脚 HCS12 微 Controller

C++ 为什么返回对抽象基类的引用

c - 在结构中访问和设置数组值

c - 如何从参数返回内存指针以应用于夹板