让我们从问题开始:
1. 为什么会出现栈溢出?
1. 在递归调用的时候,递归的深度过大就会导致系统栈溢出
2. 在函数中直接定义数组时数组空间开的过大,( 在函数中直接定义的数组是在栈区中申请空间,栈空间是有限的
如果是在函数外面定义,那么是在堆中申请,所以大数组需要在函数外面定义 )
2. 怎样进行手工开栈?
微软的编译器(C++)
#pragma comment(linker, "/STACK:102400000,102400000")
G++
int size = 256 << 20; // 256MB char *p = (char*)malloc(size) + size; __asm__("movl %0, %%esp\n" :: "r"(p));
时间: 2024-10-22 03:38:30