gpt4 book ai didi

c++ - RAII 应该导致内存泄漏吗?

转载 作者:太空宇宙 更新时间:2023-11-04 14:42:03 26 4
gpt4 key购买 nike

#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>

struct A
{
A(char* p)
: p(p)
{}

~A()
{
delete this->p;
}

char* p;
};

int main()
{
A a(new char);
_CrtDumpMemoryLeaks();
}

在 Debug模式下运行后,Visual Studio 2012的输出窗口显示:

Detected memory leaks!
Dumping objects ->
{142} normal block at 0x007395A8, 1 bytes long.
Data: < > CD
Object dump complete.

这是什么原因?

最佳答案

也许它在实际调用析构函数之前转储内存泄漏?尝试:

int main()
{
{
A a(new char);
}
_CrtDumpMemoryLeaks();
}

我建议使用标准的(或 boost 的)智能指针类,例如 unique_ptrshared_ptr,而不是直接使用原始指针处理 new/delete。

编辑:删除了将指针设置为 NULL 的建议,因为 delete 会处理该问题。

关于c++ - RAII 应该导致内存泄漏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14001029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com