在用GNU編譯器編譯時更改Linux中C+應用程序的堆棧大小在OSX中,在C+程序編譯過程中使用g++我用LD_FLAGS= -Wl,-stack_size,0x100000000但是在SUSE Linux中,我經常會遇到這樣的錯誤:x86_64-suse-linux/bin/ld: unrecognized option '--stack'和類似的。我知道可以用ulimit -s unlimited但是這并不是很好,因為單個用戶并不總是能做到這一點。如何在Linux中為單個應用程序增加堆棧大小?
3 回答
LEATH
TA貢獻1936條經驗 獲得超7個贊
#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;}main()main()getrlimit/setrlimitmain()
縹緲止盈
TA貢獻2041條經驗 獲得超4個贊
stack_size--stack
gcc -Wl,--stack,4194304 -o program program.c
添加回答
舉報
0/150
提交
取消
