3

多くのスタックを必要とする C++ プログラムのためにそれを行う必要があります。g++ (OS X Lion に含まれています) を使用してコンパイルします。プログラムでそれを増やすにはどうすればよいですか?

4

2 に答える 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 風のオペレーティング システムで動作します。

#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 に答える