C++ - 在运行时展开堆栈

标签 c++ memory stack-overflow

如何在需要时自动扩展堆栈? (直到最大我决定)

我正在尝试创建一些获取函数指针的东西(随机的,我不知道函数真正需要什么)并用它创建光纤。 但是我需要创建很多纤维,但是当它们占用的纤维比默认纤维多时,我希望它自动扩展,直到我决定达到最大值。

原因:我需要创建很多纤程,如果我用它们创建大堆栈,那么它也会在 RAM 中占用大量内存。但如果我创建小堆栈,它会抛出异常。 (堆栈溢出)

但是应该有大栈和小栈,那么我需要在运行时自动扩展它。

最佳答案

如果您使用 CreateFiberEx要创建纤程,您可以使用较小的提交堆栈大小和较大的保留堆栈大小。但是请注意,无论您为保留指定什么,都会从系统可用的总内存中删除。但是,除非您需要,否则它不会致力于 RAM。详情描述here .

关于C++ - 在运行时展开堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11961568/

相关文章:

c++ - 如何在静态 constexpr 类成员中使用 make_tuple() ?

c - 函数局部变量在每次调用中的相同地址

memory - 绘制进程的内存使用情况

asp.net - 如何调试 : w3wp. exe 进程由于堆栈溢出而终止(在一台机器上有效,但在另一台机器上无效)

带有tomcat的jsf应用程序上的java.lang.stackoverflowerror

php - 在 prestashop 中导入数据库

c++ - Visual C++ 编译器允许从属名称作为没有 "typename"的类型?

c++ - IE9 无法在 BHO 中的 HTMLWindow2 上触发 onscroll 事件

c# - 序列化/反序列化后使用的ram大小异常增加

c++ - const_iterator<T> 和 iterator<const T> 有什么区别?