9
数组类型与使用malloc分配的数组之间的区别
今天,我用一些C代码帮助了我的一个朋友,但我发现了一些奇怪的行为,无法解释他为什么会这样。我们有一个TSV文件,其中包含一个整数列表,int每行一行。第一行是列表中的行数。 我们也有一个带有非常简单的“ readfile”的ac文件。第一行被读取为n,即行数,然后进行了以下初始化: int list[n] 最后一个为环n带fscanf。 对于小n(直到〜100.000),一切都很好。但是,我们发现,当n大(10 ^ 6)时,将发生段错误。 最后,我们将列表初始化更改为 int *list = malloc(n*sizeof(int)) 一切都很好,即使很大n。 有人可以解释为什么会这样吗?是什么引起的段错误int list[n],在我们开始使用时已停止list = malloc(n*sizeof(int))?