如何确定?这取决于编译器/架构/主机系统吗?
示例:
int array[0x8000000000000000];
对于这一行,GCC 在 x86_64 位系统上输出以下内容:
Error "size of array 'array' is too large".
我认为静态数组是指固定长度的数组(静态分配,如
int array[SIZE]
,而不是动态分配)。数组大小限制应取决于声明的数组的范围。
ulimit -a
查看并使用 ulimit -s STACK_SIZE
修改堆栈大小。static int array[SIZE]
),则数组将再次存储在 DATA 或 BSS 部分中(分别基于数组是否已初始化或未初始化)。 DATA 和 BSS 部分的大小由底层操作系统决定。