gpt4 book ai didi

c++ - 这里的unique_ptr会不会有内存泄漏

转载 作者:行者123 更新时间:2023-11-30 00:46:57 24 4
gpt4 key购买 nike

#include<iostream>
#include<memory>
using namespace std;
int main()
{
unique_ptr<int> p(new int);
*p = 10;
cout<<*p<<endl;
p = NULL;
if(p)
cout<<"It's NOT NULL\n";
else
cout<<"It's NULL NOW\n";
return 0;
}

//由于我将 NULL 分配给 p,当程序完成时,它将删除//具有 NULL 的 p。虽然删除 NULL 不会导致任何问题,但 p//earlier 持有的内存不会被释放。我对么 。

最佳答案

不会有内存泄漏,尽管您应该使用 p = nullptr 而不是 p = NULL。这是因为 std::unique_ptr 重载了 nullptr_t 类型的赋值运算符:

从标准来看,效果

unique_ptr& operator=(nullptr_t) noexcept;

是调用reset()。而这反过来又会释放任何指向的内存。

关于c++ - 这里的unique_ptr会不会有内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36543118/

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