c++ - delete命令会清除new分配的内存吗?

标签 c++

我正在尝试了解 delete 如何清除为对象分配的内存。 谁能解释清楚吗?

我正在做这样的事情:

class MyClass{
public :
    MyClass() {std::cout <<" constructed\n";}
    ~MyClass() {std::cout <<" destroyed\n";} 
};
int main () 
{
    MyClass * pt=NULL;
    pt = new MyClass();
    delete pt;
    if ( pt == NULL ) 
        std::cout<<"deallocated\n";
}

最佳答案

delete pt 将调用析构函数 ~MyClass(),然后释放对象占用的所有内存*pt 回到操作系统。

做的是改变指针的值,因为那是不必要的。

有些程序员会在 delete 之后设置 pt = nullptr,因为 C++ 标准保证 delete nullptr 是空操作。所以它可以帮助程序稳定。

关于c++ - delete命令会清除new分配的内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29651045/

相关文章:

c++ - 模板化 printMap 未编译

c++ - 我可以强制初始化枚举类类/函数模板的所有可能枚举值吗?

c++ - 是否为未使用的模板类方法生成目标代码?

c++ - 系统 ("pause") 不适用于 freopen

c++ - 将字符串映射到 [0,100] 范围内的随机数的算法

c++ - 如何将常量数组传递给构造函数初始化列表

c++ - std::cout 打印字符 N 次

c++ - 如何在 gdb 中列出类方法?

c++ - 巧妙破坏的 C++ 代码的邪恶样本

java - 如何测试我的 FIX 客户端?那里有我可以使用的假 FIX 交易所吗?