gpt4 book ai didi

c++ - 我应该将有内存泄漏的库转换为 C++11 的智能指针吗?

转载 作者:太空狗 更新时间:2023-10-29 21:23:43 25 4
gpt4 key购买 nike

我正在尝试纠正“库”中的内存泄漏,但不确定如何着手。

我应该使用 C++11 的 unique_ptr 吗?共享指针? weak_ptr?

Foo& bar() {
Foo* ptr = some_pointer;
ptr = new Foo();
return *ptr;
}

我已经查看了它们之间的区别,但仍然不确定我应该使用哪个,或者我是否应该使用它们。整个库都使用原始指针,但很少进行自身清理。

有什么建议吗?

最佳答案

通常只是用智能指针替换原始指针没有解决任何问题。您必须设计要使用的软件要么有效。在我看来图书馆不是设计的,这意味着可能没有办法使其正常工作,而不是完全重写它。

如果库对象本身不包含指针,并且成员函数从不返回 this(或者对于那些做,像 operator=,返回值永远不会被使用。你可能试一试 std::shared_ptr,如果足够的话,我可以工作限制得到满足。其他人可能不会,至少不会一般来说。几乎可以肯定在某些情况下unique_ptr 会更合适。但是 shared_ptr 会在这种情况下也能工作。而且你不能使用 weak_ptr没有 shared_ptr 开始,

关于c++ - 我应该将有内存泄漏的库转换为 C++11 的智能指针吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17640044/

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