我有一个结构,其中有一些 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序列化可能在这里有所帮助。

关于c++ - vector 作为成员的C++结构大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10564052/

10-13 07:32
查看更多