使用 mingw 编译时增加堆栈大小?

发布于 2024-09-15 23:17:49 字数 221 浏览 3 评论 0原文

我正在编写一个递归洪水填充算法来查找图像中的连接组件,我的代码可以使用 MSVC 2008 编译器编译并运行良好;但 mingw 编译的二进制文件在运行时崩溃了。

当我使用 std::stack 将算法转换为非递归算法后,一切顺利。

但是如果在某些情况下我必须使用递归算法,而 mingw 无法处理怎么办?

如何增加二进制文件的堆栈大小,是否有任何编译选项?

谢谢

I'm writing a recursive flood-fill algorithm to find connected components in an image, my code compiles and runs well with MSVC 2008 compiler; but the mingw-compiled binary crashed at runtime.

After I converted the algorithm to non-recursive with std::stack, everything goes well.

But what if I must use recursive algorithm in some case, and mingw cannot handle it?

How can I increased stack size of a binary, is there any compilation options?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

じ违心 2024-09-22 23:17:49

使用

gcc -Wl,--stack,N

其中 N 是堆栈大小。例如gcc -Wl,--stack,4194304

Use

gcc -Wl,--stack,N

where N is stack size. E.g. gcc -Wl,--stack,4194304

╰つ倒转 2024-09-22 23:17:49

也许增加堆栈大小不是您想要的解决方案。这些限制的存在确实是有原因的。
在不久的将来,您的算法也可能会使用更多的堆栈空间,您将不得不再次增加它。

也许您应该考虑将算法转换为非递归算法。
对于每个算法都可以这样做。
查看此讨论

并且您可能还会获得性能提升

Maybe increasing stack size is not the solution you want. These restrictions do exist for a reason.
It also may happen that in a near future your algorithm will use even more stack space and you will have to increase it again.

Perhaps you should consider converting your algorithm into a non-recursive one.
This can be done for every algorithm.
See this discussion

And you will probably gain a performance improvement also

爱冒险 2024-09-22 23:17:49

也许最好的选择是使用 pthreads 启动一个新线程并在新线程中运行您的算法。 pthread_create 的参数之一是 pthread_attr_t。使用此属性,您可以指定堆栈大小(通过调用 pthread_attr_setstacksize)。

编辑:这是否有效取决于底层兼容层的支持

probably the best bet is to use pthreads to start a new thread and run your algorithm in the new thread. One of the parameters to pthread_create is pthread_attr_t. Using this attribute you can specify the stack size (by calling pthread_attr_setstacksize).

Edit: Whether this works or not is dependent on support of the underlying compatibility layer

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文