【发布时间】:2017-12-16 00:48:06
【问题描述】:
给定一个这样的人为示例结构:
static const int ARRAY_SIZE = 64;
struct some_struct
{
int buffer_size;
char buffer[ARRAY_SIZE] { 0 };
some_struct(char* str, int str_len) :
buffer_size(ARRAY_SIZE)
{
for (int i = 0; i < str_len; i++)
{
buffer[i] = str[i];
}
}
};
结构是否需要显式析构函数来释放数组的内存? 我打算在堆栈和堆上使用结构,即
// Stack
//
char myStr1[] = "string1";
some_struct myStackStruct(myStr1, 6);
...
// Heap
//
char myStr2[] = "string2";
some_struct* myHeapStruct = new some_struct(myStr2, 6);
...
delete myHeapStruct;
像这样的结构中的固定大小的数组是否需要在析构函数中显式销毁?
【问题讨论】:
-
没有。只有
delete你new。 -
你也不需要在构造函数的成员初始化列表中提及它
-
使用 std::string,而不是 char 数组。