在 std::vector 成员中取消分配数组
De-allocation of arrays in std::vector members
这是一个关于 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];
其中五个字节存储在结构外部,并且确实需要特殊处理。
相关文章:
- C++:检查动态取消分配是否正常工作
- 使用 delete [] 运算符取消分配类中数据成员的内存
- 取消分配动态分配的字符数组的析构函数
- 我们应该在抛出异常之前取消分配内存吗
- 在这种情况下,数组a会被取消分配吗
- 在可拆卸线程完成操作时取消分配内存
- 是否避免因变量作用域而取消分配
- 在访谈中,用C++编写两个函数来分配和取消分配int数组
- 从私有类变量中取消分配内存
- C/C++:取消分配或删除动态创建的内存块
- "Delete"不取消分配动态内存
- 取消分配包含字符串变量的结构
- 从堆栈和堆中取消分配内存
- 加载程序如何从动态模块分配/取消分配静态数据
- 正确分配和取消分配指向对象的指针的二维数组
- VS2012静态代码分析器在取消分配内存向量时给出误报
- 如何取消分配在此函数中创建的内存
- 在Java中取消分配分配给对象的内存
- 是否需要取消分配基元数组
- 如何在标准模板库中分配/取消分配对象