在 std::vector 成员中取消分配数组

De-allocation of arrays in std::vector members

本文关键字:取消 分配 数组 成员 std vector      更新时间:2023-10-16

这是一个关于 std::vector 成员结构内部数组范围的问题。

假设我有下一个代码:

struct memberStruct {
...
char array[5];
...
};
std::vector <memberStruct> _workVector;

问题:哪个向量清除方法(清除/擦除/pop_back)确保 memberStruct.array 取消分配 AKA 超出范围?

成员array是封闭结构的一部分,memberStruct,不需要分配或取消分配它。vector将分配/释放memberStruct实例,这也将照顾这些实例中的成员。

array将成为memberStruct的一部分。此结构将为 5 个字节 + 其他成员 + 填充。所以你的问题的答案是:你提到的每一种方法都可以解决问题。

想想

...
char array[5];
...

相当于

...
char array_0;
char array_1;
char array_2;
char array_3;
char array_4;
...

事情可能会变得清晰。

这与

char *array = new char[5];

其中五个字节存储在结构外部,并且确实需要特殊处理。