这是关于std :: vector成员结构中数组范围的问题。
假设我有下一个代码:
struct memberStruct {
...
char array[5];
...
};
std::vector <memberStruct> _workVector;
问题:哪个向量清除方法(clear / erase / pop_back)确保memberStruct.array取消分配AKA超出范围?
答案 0 :(得分:5)
成员array
是封闭结构memberStruct
的一部分,不需要分配或取消分配它。 vector
将分配/取消分配memberStruct
的实例,并将处理这些实例中的成员。
答案 1 :(得分:2)
array
将成为memberStruct
的一部分。这个结构将是5个字节+其他成员+填充。所以你的问题的答案是:你提到的每一种方法都可以解决问题。
答案 2 :(得分:2)
想想
...
char array[5];
...
等同于
...
char array_0;
char array_1;
char array_2;
char array_3;
char array_4;
...
事情可能会变得清晰。
这与
非常不同char *array = new char[5];
其中五个字节存储在struct之外, do 需要特殊处理。