C ++数组在内存中的存储位置
这个问题在这里已经有了答案:
静态数组(在全局范围或名称空间中声明)将被放置在数据段中。 在函数范围内声明的本地数组将被放置在堆栈上。
int g_global_array[2] = {4,5,6}; //Data Segment
int main() {
int local_array[3] = {1,2,3}; //Stack
static int s_static = 10; //Also in the Data Segment (static)
return 0;
}
(和普通老C一样)
http://www.geeksforgeeks.org/memory-layout-of-c-program/
是的,以这种方式声明的本地数组将被存储在堆栈中并具有固定长度。
本地数组在堆栈中寻址。 有一个恒定的大小,不能增加。 如果在数组中写入的数值超过其可以包含的值,将会出现所谓的堆栈溢出。 在它们后面的字段中,存在其他值将被覆盖的记忆。 Visual Studio会创建一些保护字节来避免这种情况。
链接地址: http://www.djcxy.com/p/87905.html上一篇: Storage location of C++ array in memory
下一篇: How to marshall data structures from C/C++ into python and back