0%

如何开大栈空间

杭电 OJ 暂不支持调整栈空间大小。如果使用 G++ 提交代码,并且代码中含有递归,递归层数较深,会返回 Runtime Error (STACK_OVERFLOW)。添加如下代码可以开大栈空间:

1
2
3
4
5
6
7
int main() {
int size(256<<20); // 256M
__asm__ ( "movq %0, %%rsp\n"::"r"((char*)malloc(size)+size));
// 关同步流代码
// 主程序代码
exit(0); // 一定要添加这一条,不然会返回 Runtime Error (ACCESS_VIOLATION)
}