使用gnu g ++在Windows中进行堆栈限制的解决方法

时间:2009-09-02 14:59:32

标签: c++ gnu

我使用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

您还可以使用哪种其他选项作为问题的解决方法?

提前致谢

2 个答案:

答案 0 :(得分:5)

-Wl,--stack,somelargesize看起来就像你追求的那样。但是,我强烈建议重构代码,以便将堆用于大量分配。地址空间是一种有限的资源,你的“解决方法”要求相当大的一部分。

答案 1 :(得分:1)

This page建议你可能想尝试以下命令行选项(搜索-fno-stack-limit):

-fno-stack-limit

如果单独失败,则this other page建议也添加:

-fstack-check