gpt4 book ai didi

避免内存泄漏的 C++ 习惯用法?

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

在下面的代码中,如果 Info::addPart1() 被意外调用多次,就会发生内存泄漏:

typedef struct
{
}part1;

typedef struct
{
}part2;

class Info
{
private:
part1* _ptr1;
part2* _ptr2;

public:
Info()
{
_ptr1 = _ptr2 = NULL;
}

~Info()
{
delete _ptr1;
delete _ptr2;
}

addPart1()
{
_ptr1 = new part1;
}

addPart2()
{
_ptr2 = new part2;
}
};


Info _wrapper;
_wrapper.addPart1();
_wrapper.addPart2();

是否有 C++ 习惯用法来处理这个问题?

我可以像这样重写 addPart1addPart2 来保护 MLK

addPart1()
{
if(_ptr1 != NULL) delete _ptr1;
_ptr1 = new part1;
}

这是一个好的解决方案吗?

最佳答案

使用智能指针,例如 boost:shared_ptr , boost:scoped_ptr建议管理原始指针。 auto_ptr使用起来很棘手,您需要注意这一点。

关于避免内存泄漏的 C++ 习惯用法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/959621/

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