2

我已经用 GNU g++ 构建并编译了一个命令行程序,它“溢出”堆栈的原因有很多,主要是深度继承、创建了大量对象等。所以我在 Mac OS X 上遵循这个解决方法来解决链接时的问题:

-Wl,-stack_size,0x10000000,-stack_addr,0xc0000000

在Linux下,我刚试过ulimit -s unlimited;以这种方式运行程序不再给出分段错误

但是当尝试在 Windows 上使用 GNU g++ 编译它时,编译器无法识别

-Wl,-stack_size,0x10000000,-stack_addr,0xc0000000

您会使用什么其他选项来解决该问题?

提前致谢

4

2 回答 2

5

-Wl ,--stack, somelargesize看起来像你所追求的。但是,我强烈建议重构您的代码,以利用堆进行大分配。地址空间是一种有限的资源,您的“解决方法”需要相当大的一部分。

于 2009-09-02T15:06:01.917 回答
1

此页面建议您可能想尝试以下命令行选项(搜索 -fno-stack-limit):

-fno-stack-limit

如果这本身失败,那么这个其他页面建议也添加:

-fstack-check
于 2009-09-02T15:07:26.720 回答