C++ 静态分配数组的内存分配是否总是按地址值顺序进行的?
当我们在堆栈上创建一个数组时,比如说C++ 静态分配数组的内存分配是否总是按地址值顺序进行的?,c++,arrays,memory-management,C++,Arrays,Memory Management,当我们在堆栈上创建一个数组时,比如说intarr[20],是否保证阵列的每个单元在内存中间隔4字节?或者可能发生某些单元没有按顺序分配的情况?保证数组存储在连续内存中。指针算术的定义方式如下: &arr[i] + 1 == &arr[i + 1] 是的,所有数组元素必须是连续的。可以保证数组中的每个int将位于数组中前一个int字节之后sizeof(int)字节。在标准(§7.6.1.1下标)中,这表示为“表达式E1[E2]与*((E1)相同(根据定义)+(E2))”(你的答案
intarr[20]代码>,是否保证阵列的每个单元在内存中间隔4字节?或者可能发生某些单元没有按顺序分配的情况?保证数组存储在连续内存中。指针算术的定义方式如下:
&arr[i] + 1 == &arr[i + 1]
是的,所有数组元素必须是连续的。可以保证数组中的每个int
将位于数组中前一个int
字节之后sizeof(int)
字节。在标准(§7.6.1.1下标
)中,这表示为“表达式E1[E2]
与*((E1)相同(根据定义)+(E2))
”(你的答案是正确的,只是想添加引用)那么,这个算法也适用于动态分配的数组吗?@Ayush是的,它适用。另外,如果我是正确的,如果他们没有维护序列,他们将不得不保存额外的信息来提取离开的单元格,而他们不这样做。因此他们“必须”保持连续。