硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5933|回复: 5
收起左侧

[有问必答] 关于STM32全局变量和静态变量的存储位置

[复制链接]

2

主题

21

回帖

27

积分

新手上路

积分
27
发表于 2017-11-20 09:46:52 | 显示全部楼层 |阅读模式
问题:关于STM32全局变量和静态变量的存储位置
小弟最近在学习堆栈方面的知识,全局变量和静态变量(局部和全局)都在静态存储区分配空间,对这个静态存储区有些疑惑。
求教:1、stm32的RAM中是否有静态存储区,如果有,具体位置在哪?如果没有,全局变量和静态变量分配在哪里,是分配在堆(Heap)上吗?
           2、全局变量和静态变量在ROM中的位置是怎样的形式存放的?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2017-11-20 09:58:49 | 显示全部楼层
以MDK为例进行说明
1. 静态static仅仅起到一个限制作用域的作用。没有专门的位置,编译器会安排,不在heap上,跟heap没关系。
2. 具体变量的存储安排,可以学习下我们V5板子入门视频教程后两个章节,详细讲解:http://www.armbbs.cn/forum.php?mod=viewthread&tid=15408

非常重要,重点学习map文件:
QQ截图20171120095331.jpg
回复

使用道具 举报

2

主题

21

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2017-11-20 10:02:20 | 显示全部楼层

回 eric2013 的帖子

eric2013:以MDK为例进行说明
1. 静态static仅仅起到一个限制作用域的作用。没有专门的位置,编译器会安排,不在heap上,跟heap没关系。
2. 具体变量的存储安排,可以学习下我们V5板子入门视频教程后两个章节,详细讲解:http://www.armbbs.cn/forum.php?mod=viewthread&tid=15408

非常重要,重点学习map文 .. (2017-11-20 09:58) 
好的,非常感谢
回复

使用道具 举报

335

主题

2037

回帖

3047

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3047
发表于 2017-11-20 10:17:55 | 显示全部楼层
全局变量和静态变量都有固定的位置,由编译的时候分配。也可以加一些语句指定位置。

heap定义的空间,只有malloc语句才会使用。定义变量不会用到它。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106934
QQ
发表于 2017-11-20 10:33:51 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:全局变量和静态变量都有固定的位置,由编译的时候分配。也可以加一些语句指定位置。

heap定义的空间,只有malloc语句才会使用。定义变量不会用到它。
 (2017-11-20 10:17) 
没有固定的位置,在map文件里面的区分是Local Symbols 和 Global Symbols。

编译器的处理是由高地址到低地址存储,时序是栈,堆,全局变量含静态变量
回复

使用道具 举报

2

主题

21

回帖

27

积分

新手上路

积分
27
 楼主| 发表于 2017-11-20 17:30:15 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:全局变量和静态变量都有固定的位置,由编译的时候分配。也可以加一些语句指定位置。

heap定义的空间,只有malloc语句才会使用。定义变量不会用到它。
 (2017-11-20 10:17) 
是的,这个我是知道的。谢谢回复
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-11 00:13 , Processed in 0.222879 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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