以 vector 作为成员的结构的 C++ 大小

标签 c++ vector struct sizeof std

我有一个结构,其中有一些 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 serialize 在这里会有一些帮助。

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

相关文章:

c++ - 了解对象初始化

c++ - [性能]--- string::operator+= vs. vector<char> push_back

php - eps 图像(来自 inkscape)未显示在 tcpdf 中

c - 使用 mmap() 如何创建动态大小的结构

struct - 实现 Rust 特征会导致找不到结构

c - 将指向指针的指针分配给指向结构内部指针的指针

C++:链表头尾指针

c++ - 没有重复的背包 : Maximum Amount of Gold

C++::#include:ing 多个源文件中的模板类头文件?

c++ - 免费(): invalid pointer for vector<vec4i> c++