- 错误1 当数组的内存占用较大时,会引发异常
#include <iostream>
using namespace std;
int main() {char buff[2000000];cout << (int)buff[sizeof(buff) - 1] << endl;
- 错误 2
- 当调用次数较小的时候,栈内存还没有满,可以输出,该地址相减除以1024等于100,就是每调用一次函数,分配的内存数,
- 当调用函数次数较大时候,栈内存爆掉了,就会引发异常
- 当n=20时候
- 内联函数inline:
- 可以解决该函数调用时间上的问题,可以缩短调用时间
- 但是会将主调函数编译后的代码块变得十分 "臃肿"
- inline定义的函数,在编译时,会将该函数的函数体直接插入到调用处
- 就相当于内联函数的函数体在调用出重新写了一遍
总结:
- 栈的内存默认为2兆,内存可以修改
- 站内存储的是非new或molloc出来的变量,没调用一次函数,就会在栈内开辟一段空间,大小为该函数内所有变量的内存和,当内存过大时,栈爆掉就会引发异常
- 程序是从高内存向低内存进行存储的,两个相邻空间的内存地址相减就能得到
- 每分配一块空间,这块内存空间就叫做 " 栈帧 "