增加OS X Lion中的堆栈大小

时间:2012-04-18 17:06:31

标签: g++ stack osx-lion

我需要为需要大量堆栈的C ++程序执行此操作。我使用g ++(包含在OS X Lion中)来编译它。我怎么能为我的程序增加它?

2 个答案:

答案 0 :(得分:6)

来自http://developer.apple.com/library/mac/#qa/qa1419/_index.html

使用gcc,使用-Wl:

将链接标记传递给ld
gcc -Wl,-stack_size -Wl,1000000 foo.c

答案 1 :(得分: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;
}