Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个结构,其中有一些向量作为成员:
struct my_struct { std::vector<int> x; // more members here };
和 my_struct 的一个实例:
my_struct A;
结构中的向量在程序执行期间可以明显改变,例如
A.x.resize(...);
或 Axpush_back(...);
我的问题是,有没有办法在程序的某个时候知道 A 的内存大小?由于向量成员,sizeof(A) 不会返回正确答案。
向量的大小不会影响结构的大小,因为向量分配内存以保存堆上的对象,至少使用默认分配器。此外,将结构内容写入文件时,永远不会写入向量保存的对象,只会写入向量数据成员的值。这些对象由某种指针中的向量引用,因此写入文件的是指针的值(地址),而不是它指向的数据。要将向量及其对象写入文件,您需要自己实现。也许 boost serialize 在这里可能会有所帮助。