gpt4 book ai didi

c - 可以在 GCC 中声明的静态数组的最大大小是多少?

转载 作者:太空狗 更新时间:2023-10-29 17:16:07 33 4
gpt4 key购买 nike

它是如何确定的?这是否取决于编译器/架构/主机系统?

例子:

int array[0x8000000000000000]; 

对于这一行,GCC 在 x86_64 位系统上输出以下内容:

Error "size of array 'array' is too large".

最佳答案

我认为静态数组是指固定长度的数组(静态分配,如 int array[SIZE],而不是动态分配)。数组大小限制应取决于声明的数组范围。

  • 如果您在局部范围内(在某些例程内)声明了数组,则大小限制由堆栈大小决定。
  • 如果 gcc 在 linux 上运行,堆栈大小由一些环境变量决定。使用ulimit -a查看,使用ulimit -s STACK_SIZE修改堆栈大小。
  • 如果 gcc 在 Windows 上运行(如 MinGW),堆栈大小可以通过 gcc -Wl,--stack, STACK_SIZE 指定。
  • 如果您在全局范围内声明了数组,则该数组存储在 DATA 或 BSS 部分(分别取决于该数组是已初始化还是未初始化)。 DATA 和 BSS 部分的大小由底层操作系统决定。
  • 如果您在静态范围内声明了数组(如 static int array[SIZE]),同样,数组存储在 DATA 或 BSS 部分(取决于数组是已初始化还是未初始化分别)。 DATA 和 BSS 部分的大小由底层操作系统决定。

关于c - 可以在 GCC 中声明的静态数组的最大大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18371584/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com