c++ - 为什么在类里面声明的指针类型的数据,在调用析构函数的时候都要用delete删除?

浏览:39日期:2023-05-05

问题描述

class dumb_array{public: // destructor ~dumb_array() {delete [] mArray; }private: std::size_t mSize; int* mArray;};

这是我在stackoverflow上看到的某个人回答时写的一段c++代码中的部分,我不懂为什么声明了一个指针的数据成员,在这个类里面就是int* mArray,为什么在用析构函数的时候,要用delete操作符去释放内存空间?这个指针指向的地址不一定是由堆分配而来的内存啊!看到好多代码,他们都用delete来释放这种数据成员所占据的内存。这是为什么呢?

问题解答

回答1:

你需要看这个类的构造函数是怎么写的,要把构造函数和析构函数一起看才行。

回答2:

可能是因为他们不会或者不能使用智能指针吧…

相关文章: