OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4128|回复: 5

结构体变量内存分配问题

[复制链接]

24

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2014-1-7
在线时间
16 小时
发表于 2015-9-22 20:58:21 | 显示全部楼层 |阅读模式
5金钱
typedef struct
{
    int a;
    int  b;
}_Data_t,*_Data;    //结构体类型重定义

_Data_t A;-----------------------(1)
_Data_t B={1,2,3};---------------(2)
_Data p=&A;----------------------(3)
问题1:我实验过在keil的watch观察器中查看,(1)中A不分配内存(显示0x00000000) (2)中B分配内存  (3)这样子A也分配了内存,请问这是为什么,应该是变量申明的时候就分配了内存吧,怎么(1)没分配内存呢,而(3)取地址后就分配了
问题2: 如果在另一个.h文件中重定义结构体类型,将其重定义成 typedef _Data_t *Data;这时候发现"_Data_t"Data前面的下划线可要可不要,我看很多例程中是不要的,keil虽然go to definition不过去,但是应该用起来没错,请问为什么?
谢谢原子哥赐教!

最佳答案

查看完整内容[请看2#楼]

1,被mdk优化了.想要看,加violate关键字限定就可以防止MDK优化. 2,去掉,不去掉,完全就是2个东西.  都可以,说明都有定义.具体什么定义,自己goto了.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-22 20:58:22 | 显示全部楼层
1,被mdk优化了.想要看,加violate关键字限定就可以防止MDK优化.
2,去掉,不去掉,完全就是2个东西.  都可以,说明都有定义.具体什么定义,自己goto了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

24

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2014-1-7
在线时间
16 小时
 楼主| 发表于 2015-9-22 22:32:57 | 显示全部楼层
但是程序中只有typedef Data_t *Data,这样的重定义,Data_t这样的结构体是没有的,只有刚提到的_Data_t,这个怎么解...
回复

使用道具 举报

24

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2014-1-7
在线时间
16 小时
 楼主| 发表于 2015-9-22 22:36:00 | 显示全部楼层
原子哥,我这样试了volatile struct Data B;看到的还是0x00000000,还是不行啊
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-22 22:48:16 | 显示全部楼层
回复【4楼】wtch519361:
---------------------------------
不知道你怎么看的了,呵呵...
B的地址不可能是0X000000的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

24

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
219
金钱
219
注册时间
2014-1-7
在线时间
16 小时
 楼主| 发表于 2015-9-23 09:06:40 | 显示全部楼层

也很奇怪,昨天在家低版本的MDK上好像不行,再问一下,定义的结构体指针p怎么不分配内存,是不是value中显示的是地址中存的值?这个value这栏怎么看,有时候是地址有时候又是数据的

回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 08:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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