C++中类类型数组如何释放

2024年12月01日 09:58
有2个网友回答
网友(1):

用delete []释放就可以了。

C++中对于不需要逐个析构的类型(本身的析构函数没有操作,并且所有基类和成员的析构函数都没有操作,称为trivally destructible)的对象数组,释放的时候单纯就是把整个数组占用的内存释放(这个时候用delete或者delete[]结果上都是一样的,但是不建议直接用delete)。而对于需要逐个析构的类型,在用new申请内存的时候就会额外记数组的尺寸,释放的时候必须使用delete []。delete []会先根据事先记录的数组尺寸调用每个元素的析构函数,然后再将内存释放。delete则只会调用第一个元素的析构函数。

另外,不建议直接使用裸指针。最好使用容器或者智能指针(动态数组的情况,应该用vector)

网友(2):

用new 创建的才用 delete 。不是用new创建的会自动调用析构函数。但是如果类的构造里用了new 创建其他数据,你必须在类的析构函数中调用delete来释放对应的数据。
但是,不管怎样,不能一次性释放数组中的元素。