当调用一个函数时,就会在栈空间为这个函数分配一块内存区域,这块内存区域叫做“栈帧”,专门给这个函数使用。
在调用函数时要避免栈空间溢出,否则将会引起程序异常。
示例一:
#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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探