我使用GNU g ++构建并编译了一个命令行程序,它出于多种原因“溢出”堆栈,主要是深度继承,创建了大量对象等。所以我在Mac OS X上遵循这个解决方法来解决链接时出现问题:
-Wl,-stack_size,0x10000000,-stack_addr,0xc0000000
在Linux下,我刚试过ulimit -s unlimited
;以这种方式运行程序不再导致分段错误
但是当尝试使用GNU g ++在Windows上编译它时,编译器无法识别
-Wl,-stack_size,0x10000000,-stack_addr,0xc0000000
您还可以使用哪种其他选项作为问题的解决方法?
提前致谢
答案 0 :(得分:5)
-Wl,--stack,somelargesize看起来就像你追求的那样。但是,我强烈建议重构代码,以便将堆用于大量分配。地址空间是一种有限的资源,你的“解决方法”要求相当大的一部分。
答案 1 :(得分:1)
This page建议你可能想尝试以下命令行选项(搜索-fno-stack-limit):
-fno-stack-limit
如果单独失败,则this other page建议也添加:
-fstack-check