这是Linux上的gcc 4.4.6.
这是行为
bizarre.c
double a[500000000];
main() {
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下方法编译:
gcc bizarre.c
Run Code Online (Sandbox Code Playgroud)
然后编译器使用4G内存,并且需要很长时间.
如果我将数组大小设置为50000000,则编译所需的内存和时间会少得多.
这就像编译器正在执行它正在编译的代码.
我意识到以这种方式创建一个巨大的阵列可能不是最佳实践,但任何解释?
小智 6
这是与--build-id相关的已知链接器错误,现在已在主线上修复.请参阅 http://sourceware.org/bugzilla/show_bug.cgi?id=12451 有些发行版采用了早期的Nick补丁,不必要地计算了.bss的校验和,要求分配和归零.bss部分.抱怨你的发行版.
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |