C++ 我应该删除.h文件中的字符数组吗

C++ 我应该删除.h文件中的字符数组吗,c++,arrays,raii,C++,Arrays,Raii,如何管理Test.h中的字符数组缓冲区 测试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()释放内存 是否在堆栈上为每个T

如何管理Test.h中的字符数组
缓冲区

测试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
实例分配了字符数组
buffer
,因此不需要删除它?

否,不需要删除它。因此,您不需要析构函数(除非您有其他需要释放的资源)

规则很简单:使用
malloc
/
new
/
new[]
获得的每个内存/对象都应该被释放/销毁一次,并且只能被释放/销毁一次,并使用相应的
free
/
删除
/
删除[]
。同样如此。没别的了

也,在现代C++中,你很少需要像这样管理内存资源。您可以使用

std::vector
或其他容器,或者如果确实需要指针,则应该使用智能指针、
std::unique\u ptr
std::shared\u ptr

Is the char array buffer allocated on the stack for
each instance of Test and so does not need to be deleted?
由于
char buffer[255]
是封装在类
Test
中的纯字符数组,因此它的生存期与类
Test
的对象绑定,即,每当类
Test
的对象被创建时,数组的内存将被分配,当对象被销毁时,内存将被释放


因此,无论您是在
堆栈上创建
Test
类的对象,还是在
堆上创建
类的对象(使用
new
),当对象将被销毁时(自动或使用
delete
),数组占用的内存都将被释放。

您永远不需要删除任何未从new返回的内容。请注意:“在标题中”不属于这个问题的任何地方。