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

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

    return 0;
}
a[0]a[1]a[2]应该是连续的,并且对于b来说应该是相同的,但是是否有关于b在哪里分配a的保证?

如果不是,是否有任何方法可以强制ab彼此相邻?即,以便它们在堆栈中彼此相邻分配。

最佳答案

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

为了至少获得两者之间的相对顺序,您必须将它们封装到structclass中,即使那样,也要考虑填充/对齐方式。

10-08 04:20