我想知道下面代码中的数组a和b是否在内存中是连续的:
int main() {
int a[3];
int b[3];
return 0;
}
a[0]
,a[1]
和a[2]
应该是连续的,并且对于b
来说应该是相同的,但是是否有关于b
在哪里分配a
的保证?如果不是,是否有任何方法可以强制
a
和b
彼此相邻?即,以便它们在堆栈中彼此相邻分配。 最佳答案
否,C++不保证这些变量在内存中的位置。一个或两个甚至可能都不在内存中(例如,如果它们已优化)!
为了至少获得两者之间的相对顺序,您必须将它们封装到struct
或class
中,即使那样,也要考虑填充/对齐方式。