【发布时间】:2014-04-14 18:38:02
【问题描述】:
增加 pthread 的默认堆栈大小的最简单方法是什么?有没有办法调整堆大小、进程级别和单个线程级别?如果 new 运算符由于底层内存泄漏而失败,我如何设置 new 处理程序来处理错误分配?
【问题讨论】:
-
堆是每个进程的,在所有线程之间共享。
标签: c++ multithreading pthreads heap-memory stack-memory
增加 pthread 的默认堆栈大小的最简单方法是什么?有没有办法调整堆大小、进程级别和单个线程级别?如果 new 运算符由于底层内存泄漏而失败,我如何设置 new 处理程序来处理错误分配?
【问题讨论】:
标签: c++ multithreading pthreads heap-memory stack-memory
增加 pthread 的默认堆栈大小的最简单方法是什么?
您可以在创建新线程时使用pthread_attr_setstacksize 设置堆栈大小。堆栈大小不得小于PTHREAD_STACK_MIN。
有没有办法同时调整堆大小、进程级别和单个线程级别?
使用 Solaris 编译器,您可以尝试使用 -xpagesize 选项更改页面大小,但您无法调整堆的大小(它将与机器可用的内存一样大)。所有线程只共享一个堆,因此您无法针对每个线程进行调整。
如果 new 运算符由于底层内存泄漏而失败,我如何设置 new 处理程序来处理错误分配?
新的处理程序是一个专门的特性并且没有通用的答案,如何使用一个新的处理程序非常依赖于你程序的细节。它不能用于修复内存泄漏,一旦内存泄漏为时已晚,因此您需要首先防止泄漏发生。 (如果您不知道如何编写新的处理程序,那么您可能不需要使用。)
【讨论】: