LEATH
可以编程方式将堆栈大小设置为七限,G.#include 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
{
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/setrlimit代码有机会更改堆栈大小。因此,任何大型局部变量都应该只在随后被调用的函数中定义。main(),在成功地增加堆栈大小之后。