gpt4 book ai didi

c - 大小为 LONG_MAX 的数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:08:20 24 4
gpt4 key购买 nike

我需要声明一个大小为 LONG_MAX 的数组(2147483647,在 c 库中 <limits.h> ),我确实需要它来解决问题。但是代码给了我错误:如果我写 long int v[LONG_MAX];编译器给出 size of array 'v' is too large .我该如何解决这个问题?

最佳答案

在几乎所有存在的系统上,声明为具有固定大小的局部数组的变量都放在堆栈上。

C 标准 (5.2.4.1) 仅保证在操作系统上运行的程序应该能够容纳 65535 字节大小的对象。无论标准如何规定,操作系统都会为您的进程设置堆栈限制。

如果你声明一个太大的对象,就 C 标准而言,你会得到你描述的编译器错误。否则,如果您通过了该检查但仍然使用了太多堆栈、嵌套函数调用等,则会出现运行时错误:堆栈溢出。

解决这个问题的首选方法是始终使用动态内存分配来分配大对象。然后将对象分配到堆上,您计算机的 RAM 几乎设置了限制。

关于c - 大小为 LONG_MAX 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18696823/

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