C++手动扩栈
——————————————————————————————————————————————————————————————————————————
G++
#ifdef OPENSTACK
int size = 128 << 20; // 64MB
char *p = (char*)malloc(size) + size;
#if (defined _WIN64) or (defined __unix)
__asm__("movq %0, %%rsp\n" :: "r"(p));
#else
__asm__("movl %0, %%esp\n" :: "r"(p));
#endif
#endif
#ifdef OPENSTACK
exit(0);
#else
return 0;
#endif
这一段加在main函数里,可以避免在dfs的时候递归太深而爆栈
C++
#pragma comment(linker, "/STACK:102400000,102400000")
加入到头文件的位置中可扩栈
————————————————————————————————————————————————————————————
G++写入主程序本地Devc++调试可用,头文件扩栈似乎不可用