c – 我应该删除.h文件中的char数组
作者:互联网
如何在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()释放内存.
是否为每个Test实例在堆栈上分配了char数组缓冲区,因此不需要删除?
解决方法:
不,您不需要删除它.因此,您不需要析构函数(除非您有其他需要释放的资源)
规则很简单:使用malloc / new / new []获得的每个内存/对象应该被释放/销毁一次,并且只有相应的free / delete / delete [].没什么.而已.
此外,在现代C中,您很少需要像这样管理内存资源.你可以使用std :: vector或其他容器,或者如果你真的需要指针,你应该使用智能指针,std :: unique_ptr和std :: shared_ptr.
标签:raii,c,arrays 来源: https://codeday.me/bug/20190727/1556498.html