nullptr是否会释放指针的内存?

Ant*_*osi 0 c++ pointers nullptr

我问的是,即使已经为其分配了nullptr,也应删除指针.

例如,在以下情况中:

std::string* foo = new std::string ("foo");
foo = nullptr;
Run Code Online (Sandbox Code Playgroud)

在nullptr释放之前占用内存还是我们面临内存泄漏?

Dav*_*nan 10

不,此代码泄漏您分配的对象new.

如果分配了一个对象new,则必须将其取消分配delete.


我问的是,即使已经为其分配了nullptr,也应删除指针.

您使用的术语表明您正在以错误的方式思考这个问题.它不是您需要删除的指针,而是对象.指针只是代码引用对象的一种方式.指针变量包含对象的地址.您可以拥有多个指针变量,这些变量都引用同一个对象.您不删除指针,删除该对象.

现在,你写这样的deallocation似乎很奇怪:

delete foo;
Run Code Online (Sandbox Code Playgroud)

天真的你可能会认为这意味着删除指针foo.但这并不意味着.这意味着,删除其地址存储在foo中的对象.