使用向量作为成员的结构的C ++大小

时间:2012-05-12 13:11:28

标签: c++ vector struct sizeof std

我有一个结构,其中有一些向量作为成员:

struct my_struct
{
    std::vector<int> x;
//  more members here
};

和my_struct的一个实例:

my_struct A;

结构中的向量在程序执行期间显然会发生变化,例如

A.x.resize(...);

或     A.x.push_back(...);

我的问题是,有没有办法在程序中的某个时刻知道A的内存大小?由于向量成员,sizeof(A)不会返回正确的答案。

1 个答案:

答案 0 :(得分:4)

向量的大小不会影响结构的大小,因为向量会分配内存来保存堆上的对象,至少使用默认的分配器。此外,在将结构内容写入文件时,将永远不会写入向量所包含的对象,只会写入向量的数据成员的值。对象在某种指针中由向量引用,因此写入文件的是指针(地址)的值,而不是它指向的数据。 要将向量及其对象写入文件,您需要自己实现。也许提升序列化可能会有所帮助。