1

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

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

和 my_struct 的一个实例:

my_struct A;

结构中的向量在程序执行期间可以明显改变,例如

A.x.resize(...);

或 Axpush_back(...);

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

4

1 回答 1

4

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

于 2012-05-12T13:21:06.147 回答