当调用一个函数时,就会在栈空间为这个函数分配一块内存区域,这块内存区域叫做“栈帧”,专门给这个函数使用。
在调用函数时要避免栈空间溢出,否则将会引起程序异常。
示例一:
#include <iostream>
#include <windows.h>
using namespace std;
void test() {
//运行时将因为栈帧空间溢出而崩溃
char buff[2000000];
std::cout << (int)buff[sizeof(buff) - 1] << std::endl;
}
int main() {
test();
system("pause");
return 0;
}
示例二:
#include <iostream>
#include <windows.h>
using namespace std;
void test2(int n) {
char buff[1024 * 100]; //100K
printf("n=%d\n", n);
printf("%X\n", buff);
if (n == 1) {
return;
}
test2(n - 1);
}
int main(void) {
test2(3);
system("pause");
return 0;
}