可参考大神文章写的很清楚:
程序内存分配、RAM、ROM - ImreW - 博客园 (cnblogs.com)
一、C语言内存分区
C语言内存分区示意图如下:
1. 栈区
栈区介绍
-
栈区由编译器自动分配释放,由操作系统自动管理,无须手动管理。
-
栈区上的内容只在函数范围内存在,当函数运行结束,这些内容也会自动被销毁。
-
栈区按内存地址由高到低方向生长,其最大大小由编译时确定,速度快,但自由性差,最大空间不大。
-
栈区是先进后出原则,即先进去的被堵在屋里的最里面,后进去的在门口,释放的时候门口的先出去。
存放内容
-
临时创建的局部变量和const定义的局部变量存放在栈区。
-
函数调用和返回时,其入口参数和返回值存放在栈区。