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

时间:2013-11-03 14:04:56

标签: c++ std

这是关于std :: vector成员结构中数组范围的问题。

假设我有下一个代码:

struct memberStruct {
...
char array[5];
...
};

std::vector <memberStruct> _workVector;

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

3 个答案:

答案 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 需要特殊处理。

相关问题