当调用一个函数时,就会在栈空间为这个函数分配一块内存区域,这块内存区域叫做“栈帧”,专门给这个函数使用。 

在调用函数时要避免栈空间溢出,否则将会引起程序异常。

 

 示例一:

#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;
}

 

posted on 2022-08-25 21:13  wshidaboss  阅读(106)  评论(0编辑  收藏  举报