如何buffer
在Test.h中管理char数组?
Test.h
class Test{ public: Test(); ~Test(); char buffer[255]; };
Test.cc
#include "Test.h" Test::Test() { } Test::~Test() { // Do I need to delete/free buffer? }
我知道,当new
或malloc
正在使用的内存必须使用被释放delete
或free()
.
char数组是否在buffer
每个实例的堆栈上分配Test
,因此不需要删除?
不,您不需要删除它.因此,您不需要析构函数(除非您有其他需要释放的资源)
规则很简单:使用malloc
/ new
/ 获取的每个内存/对象new[]
应该被释放/销毁一次,并且只有相应的free
/ delete
/ delete[]
.没什么.而已.
此外,在现代C++中,您很少需要像这样管理内存资源.你会使用std::vector
或另一个容器,或者如果你真的需要指针,你应该使用智能指针,std::unique_ptr
和std::shared_ptr
.