c++ - 检查指针在析构函数中不为空

标签 c++ memory-management destructor move-semantics nullptr

<分区>

我有带有 move 构造函数的类。 move 后,指针变为空。在调用 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;
    }
}

最佳答案

不,deletedelete[] 都是为 nullptr 定义的 - 它们什么都不做。

关于c++ - 检查指针在析构函数中不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50569942/

相关文章:

c++ - 链表操作的段错误

c++ - 是否可以在其范围之外访问局部变量的内存?

python - 当另一个线程处于事件状态时,为什么不在全局对象上调用__del__?

c++ - 将 Nginx 构建到库中

c++ - 使用指向压缩结构成员的指针时出现编译器警告

assembly - 如果我们在内存地址末尾请求多字节数据会发生什么?

c++ - 如何释放我的类析构函数中的内存?

C++ : noexcept (or throw()) virtual destructor = default;

c++ - 为什么动态创建的对象的位数是对象大小的两倍?

ios - 我可以释放添加到NSMutableArray中的对象吗?这会导致崩溃吗?