变量是否在堆栈上连续?

Die*_*ser 5 c++ variables contiguous

我想知道下面代码中的数组a和b是否在内存中是连续的:

int main() {
    int a[3];
    int b[3];

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

a[0],a[1]并且a[2]应该是连续的和相同的b,但是否有任何关于b将在哪里分配的保证a

如果没有,有没有办法强迫ab相互毗连?即,使它们在堆栈中彼此相邻分配.

Lig*_*ica 16

,C++不保证这些变量在内存中的位置.一个或两个可能甚至在内存中(例如,如果它们被优化掉了)!

为了获得两者之间的相对排序,至少,你必须将它们封装到一个structor中class,即使这样,也要考虑填充/对齐.

  • 谢谢!我经常发现自己问这类问题,因为除了从其他人那里我找不到答案。如果您不介意我问的话,您从哪里获得信息?是否有一些“c++ 圣经”涵盖了基本的内存管理等内容? (2认同)