相关疑难解决方法(0)

数组类型和使用malloc分配的数组之间的区别

今天我用一些C代码帮助我的一个朋友,我发现了一些奇怪的行为,我无法解释他为什么会发生这种行为.我们有一个带有整数列表的TSV文件,每行都有一个int.第一行是列表的行数.

我们还有一个非常简单的"readfile"的ac文件.第一行读到n,行数,然后有一个初始化:

int list[n]
Run Code Online (Sandbox Code Playgroud)

最后是一个带有fscanf的n循环.

对于小n(直到~100,000),一切都很好.但是,我们发现当n很大(10 ^ 6)时,会发生段错误.

最后,我们将列表初始化更改为

int *list = malloc(n*sizeof(int))
Run Code Online (Sandbox Code Playgroud)

一切都很好,即使是非常大的n.

有人能解释为什么会这样吗?什么导致了segfault [n]的段错误,当我们开始使用list = malloc(n*sizeof(int))时停止了?

c arrays malloc variable-length-array

61
推荐指数
2
解决办法
3万
查看次数

标签 统计

arrays ×1

c ×1

malloc ×1

variable-length-array ×1