c - 为什么 int array[1000][1000] 是 C 程序中的内存问题?

标签 c

<分区>

为什么 int array[1000][1000]main 方法而不是全局声明中声明时在 C 程序中是内存问题?

最佳答案

堆栈的大小有限,因此只能容纳有限的信息。如果程序试图将太多信息放入堆栈,则会导致堆栈溢出。当堆栈中的所有内存都已分配时,就会发生堆栈溢出。

程序

int main()
{
    int array[1000][1000];
    return 0;
}  

尝试在堆栈上分配一个巨大的数组。
因为堆栈不够大,无法处理这个数组,所以数组分配溢出到程序不允许使用的内存部分。结果,程序崩溃了。


进一步阅读:The stack and the heap .

关于c - 为什么 int array[1000][1000] 是 C 程序中的内存问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25804155/

相关文章:

c - 对于数组,为什么 a[5] == 5[a]?

c - 动态函数调用

c - OpenCL:本地内存比 CPU 上的 L1 缓存更快?

C 预处理器#头文件中包含多个源文件中的错误

c - 如何避免 linux 设备驱动程序中的 copy_from_user 和 copy_to_user

c、strtoul() 在发生错误/溢出时返回无效值

java - 获取组合序列索引

c++ - Arduino编译错误: xxx does not name a type (despite it being declared 10 lines before)

c - if else C语言的简写

c - Fclose 导致 C 中的段错误