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

Should I delete char arrays in .h files

如何管理 Test.h 中的字符数组 buffer

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?
}

我知道当使用 newmalloc 时,必须使用 deletefree() 释放内存。

是否为 Test 的每个实例在堆栈上分配了字符数组 buffer,因此不需要删除?

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

规则很简单:用malloc/new/new[]得到的每个memory/object应该freed/destroyed 一次once与对应的free/delete/delete[]。没什么。仅此而已。

此外,在现代 C++ 中,您很少需要像这样管理内存资源。你会使用 std::vector 或其他容器,或者如果你真的需要指针,你应该使用智能指针,std::unique_ptrstd::shared_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] 是封装在 class Test 中的普通字符数组,因此它的 lifetime 与 [=12= 的对象相关联] class 即每当创建 class Test 的对象时,数组的内存将被分配,当对象被销毁时,内存将被释放。

因此,无论你在stackheap(使用new)上创建Testclass的对象,什么时候对象将被销毁(自动或者使用delete), array占用的内存会被释放