检查指针在析构函数中不为空[重复]

Posted

技术标签:

【中文标题】检查指针在析构函数中不为空[重复]【英文标题】:Check pointer is not null in destructor [duplicate] 【发布时间】:2018-11-07 06:11:52 【问题描述】:

我有带有移动构造函数的类。移动后,指针变为空。在调用 delete 之前,我必须在析构函数中检查 not_null 吗?

class A 
    int *data;
public:
    A(size_t size) : data(new int[size]) 

    A(A &&rhs) : data(rhs.data) 
        rhs.data = nullptr;
    

    ~A() 
        if (data) 
            delete [] data;
        
        //or
        delete [] data;
    

【问题讨论】:

【参考方案1】:

不,deletedelete[] 都为 nullptr 定义良好 - 它们不会执行任何操作。

【讨论】:

以上是关于检查指针在析构函数中不为空[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在析构函数中终止当前线程

在析构函数中捕获异常

为啥在析构函数中抛出异常时不调用重载删除?

MySQLi 在析构函数中立即关闭

glDeleteBuffers() 在析构函数调用期间崩溃

如果debug调试的时候中断总是停在析构函数的delete[] p上