找回密码
 注册
查看: 161|回复: 4
打印 上一主题 下一主题

单片机的内存分配详解

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-21 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
对于初学者而言,对单片机的内存分配往往最让人头疼,很多人学了单片机几年 都不知道单片机内部的内存使用情况是如何分配的。要了解 ROM、RAM启动,首先 需要对 链接器 Linker 如何分配内存有一定的了解。

" S# E: q* j( M+ y  K
通常,对于栈生长方向向下的单片机,其内存一般模型是:
$ z7 l, a' q% O2 r" \$ P: I6 C5 {' }2 ]
一个进程运行时,所占用的内存,可以分为如下几个部分:
1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。
2、堆区(heap):一般由程序员分配释放,若程序员不释放,程序结束时可能由OS释放。
3、全局变量、静态变量:初始化的全局变量和静态变量放在一块区域,未初始化的全局变量和和未初始化的静态变量在相邻的的另一块区域。程序结束后由系统自动释放。
4、文字常量:常量字符串就是存放在这里的,程序结束后由系统释放。
5、程序代码:存放函数体的二进制代码。
5 A! b8 t& ?# ]; a4 y- n6 z

& ?5 s9 Z" F( R% q

该用户从未签到

2#
发表于 2021-12-21 14:35 | 只看该作者
堆去内存运行完不释放吧

该用户从未签到

3#
发表于 2021-12-21 14:36 | 只看该作者
栈区是自动释放的

该用户从未签到

4#
发表于 2021-12-21 14:36 | 只看该作者
全局变量和静态变量是放在一块区域的

该用户从未签到

5#
发表于 2021-12-21 14:37 | 只看该作者
link确实有些头疼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-5-31 17:55 , Processed in 0.062500 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表