我有一个结构,其中有一些向量作为成员:
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)不会返回正确的答案。
答案 0 :(得分:4)
向量的大小不会影响结构的大小,因为向量会分配内存来保存堆上的对象,至少使用默认的分配器。此外,在将结构内容写入文件时,将永远不会写入向量所包含的对象,只会写入向量的数据成员的值。对象在某种指针中由向量引用,因此写入文件的是指针(地址)的值,而不是它指向的数据。 要将向量及其对象写入文件,您需要自己实现。也许提升序列化可能会有所帮助。