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中的对象.
| 归档时间: |
|
| 查看次数: |
854 次 |
| 最近记录: |