在内存中存储变量

Mic*_*ick 4 c++ memory-management

如果我有这样的全局变量列表......

int a;
char b;
float c[10];
double d[3];
Run Code Online (Sandbox Code Playgroud)

我在类中列出了相同的变量序列......

class test_type
{
    int a;
    char b;
    float c[10];
    double d[3];
}
Run Code Online (Sandbox Code Playgroud)

是否保证内存中所有变量的排列是相同的.ie'b'保证在全局列表和类列表中的'a'之后立即存储?

编辑:我问,因为我想A)将数据从一个复制到另一个作为"工作批次"和B)我想检查它们之间作为工作批次的任何差异.如果主要问题的答案是"否",那么是否有人对如何解决问题有任何建议,最好尽可能保持现有代码不变.

Jes*_*erE 8

不,我认为C++标准不保证全局变量的内存布局.

  • 它实际上保证了一些东西.保留具有相同访问说明符的连续声明的类/结构元素的顺序.但是,可能会涉及一些填充. (2认同)
  • 是的,但Jesper说"全局变量". (2认同)

sel*_*tze 6

为什么不简单地使用test_type类型的全局对象而不是定义多个全局变量?

class test_type
{
    int a;
    char b;
    float c[10];
    double d[3];
};

test_type global;
Run Code Online (Sandbox Code Playgroud)

现在,使用"global"副本初始化一个新的test_type对象是件小事.