gcc编译时间和内存使用情况随源代码中的数组大小的变化而变化

时间:2012-06-15 01:07:07

标签: gcc

这是Linux上的gcc 4.4.6。

这是行为

bizarre.c

double a[500000000];

main() {
}

如果我使用以下方法编译:

gcc bizarre.c

然后编译器使用4G内存,需要很长时间。

如果我将数组大小设置为50000000,则编译所需的内存和时间会少得多。

就像编译器正在执行它正在编译的代码一样。

我意识到以这种方式创建一个巨大的阵列可能不是最好的做法,而是任何解释?

1 个答案:

答案 0 :(得分:6)

这是一个与--build-id相关的已知链接器错误,现在已在主线上修复。请参阅http://sourceware.org/bugzilla/show_bug.cgi?id=12451有些发行版采用了早期的Nick补丁,不必要地计算了.bss的校验和,要求分配和归零.bss部分。抱怨你的发行版。