数组类型和使用malloc分配的数组之间的区别
今天我用一些C代码帮助了我的一个朋友,我发现了一些奇怪的行为,我无法解释他为什么会发生这种行为。我们有一个带有整数列表的TSV文件,每行都有一个int。第一行是列表的行数。
我们还有一个非常简单的“readfile”的ac文件。第一行读到n,行数,然后有一个初始化:
int list[n]
最后是一个带有fscanf的n循环。
对于小n(直到~100,000),一切都很好。但是,我们发现当n很大(10 ^ 6)时,会发生段错误。
最后,我们将列表初始化更改为
int *list = malloc(n*sizeof(int))
一切都很好,即使是非常大的n。
有人能解释为什么会这样吗?什么导致了segfault [n]的段错误,当我们开始使用list = malloc(n * sizeof(int))时停止了?
偶然的你
慕虎7371278
呼唤远方
相关分类