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
" :: "r"(p));
        #else
            __asm__("movl %0, %%esp
" :: "r"(p));
        #endif
    #endif

    #ifdef OPENSTACK
        exit(0);
    #else
        return 0;
    #endif
   

这一段加在main函数里,可以避免在dfs的时候递归太深而爆栈

C++
#pragma comment(linker, "/STACK:102400000,102400000")
加入到头文件的位置中可扩栈

————————————————————————————————————————————————————————————
G++写入主程序本地Devc++调试可用,头文件扩栈似乎不可用

原文地址:https://www.cnblogs.com/axchml/p/13720628.html