栈内存
- 什么东西存储在栈内存中?
- 环境变量
- 命令行参数
- 局部变量(包括形参)
- 栈内存有什么特点?
- 空间有限,尤其在嵌入式环境下。因此不可以用来存储尺寸太大的变量。
- 每当一个函数被调用,栈就会向下增长一段,用以存储该函数的局部变量。
- 每当一个函数退出,栈就会向上缩减一段,将该函数的局部变量所占内存归还给系统。
- 注意:
栈内存的分配和释放,都是由系统规定的,我们无法干预。
void func(int a, int *p) // 在函数 func 的栈内存中分配
{double f1, f2; // 在函数 func 的栈内存中分配... // 退出函数 func 时,系统的栈向上缩减,释放内存
}int main(void)
{int m = 100; // 在函数 main 的栈内存中分配func(m, &m); // 调用func时,系统的栈内存向下增长
}