我需要为需要大量堆栈的 C++ 程序执行此操作。我使用 g++(包含在 OS X Lion 中)来编译它。我怎样才能为我的程序增加它?
问问题
4941 次
2 回答
6
来自http://developer.apple.com/library/mac/#qa/qa1419/_index.html
使用 gcc,通过 -Wl 将链接标志传递给 ld:
gcc -Wl,-stack_size -Wl,1000000 foo.c
于 2012-04-18T17:18:03.077 回答
2
您可以使用getrlimit
/ setrlimit
- 这适用于 Linux、Mac OS X 和其他 POSIX-ish 操作系统,例如
#include <sys/resource.h>
int main (int argc, char **argv)
{
const rlim_t kStackSize = 16 * 1024 * 1024; // min stack size = 16 MB
struct rlimit rl;
int result;
result = getrlimit(RLIMIT_STACK, &rl);
if (result == 0)
{
if (rl.rlim_cur < kStackSize)
{
rl.rlim_cur = kStackSize;
result = setrlimit(RLIMIT_STACK, &rl);
if (result != 0)
{
fprintf(stderr, "setrlimit returned result = %d\n", result);
}
}
}
// ...
return 0;
}
于 2012-04-18T17:15:11.700 回答