C++静态变量、函数静态变量和成员函数静态变量的内存布局

4

考虑一些Class.cpp文件中的3个不同的静态数组:

static char array0[8];

/*static*/ char Class::s_array1[8]; //static declared in Header Class.h

void Class::DoStuff()
{
    static char f_array2[8];
}

这三个数组是否在内存中相对连续,并按照特定顺序排列,是否有明确定义?(还是取决于编译器/平台)


1
你可以通过获取它们的内存地址并进行比较/排序来实现...但是目标是什么?你想要做什么呢? - AntiClimacus
我的意思是这个可预测吗,还是取决于编译器/平台等因素? - skimon
2个回答

2

数组在内存中总是连续的,但它们相对于彼此的位置没有定义。


2

这完全取决于编译器和平台。如果在Linux平台上运行,您可以猜测这些数组将位于.bss部分。

显然,每个数组在内存中是连续的。这是强制性的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接