我有一个结构,其中有一些 vector 作为成员:
struct my_struct
{
std::vector<int> x;
// more members here
};
和一个 my_struct 的实例:
my_struct A;
结构中的 vector 在程序执行期间显然会发生变化,例如
A.x.resize(...);
或者 A.x.push_back(...);
我的问题是,有没有办法在程序运行期间的某个时刻知道 A 在内存中的大小?由于 vector 成员的原因,sizeof(A) 没有返回正确答案。
最佳答案
vector 的大小不会影响结构的大小,因为 vector 分配内存以保存堆上的对象,至少使用默认分配器。此外,将结构内容写入文件时,永远不会写入 vector 包含的对象,只会写入 vector 数据成员的值。这些对象由某种指针中的 vector 引用,因此写入文件的是指针的值(地址),而不是它指向的数据。 要将 vector 及其对象写入文件,您需要自己实现。或许 boost serialize 在这里会有一些帮助。
关于以 vector 作为成员的结构的 C++ 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10564052/