OpenEdv-开源电子网

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

STM32F429内存管理,请教原子哥和各位大神

[复制链接]

12

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2014-5-14
在线时间
56 小时
发表于 2017-5-19 16:57:34 | 显示全部楼层 |阅读模式
1金钱
大家好,情况是这样的。我现在定义了一个结构体二维数组   temp[4][252],麻烦看下下面这样写能不能用。typedef struct TEMP
{                                               
    u16 addr;     
    u16 type;     
    u16 yanshi;             
    u16 pingbi;     
    u16 Sczhao[3];      
    u32 azdd[10];       
    u16 lmd;
    u16 fhfq;
    u16 zxph;       
} TEMP ;

TEMP *temp[4][252];

在主函数里初始化的时候申请外部内存   temp[4][252]=mymalloc(1,2048*31);//申请62K字节内存
这样的话*temp[4][252]的两个左边变化的时候,数据慧慧覆盖呀?比如*temp[1][252]的数据会被*temp[4][252]的数据会覆盖吗?请指教!

有梦想,哪里都是你的舞台。哪怕从零开始,日积月累。终将厚积薄发!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
289
金钱
289
注册时间
2016-10-27
在线时间
76 小时
发表于 2017-5-19 17:02:06 | 显示全部楼层
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2017-5-19 17:23:39 | 显示全部楼层
你那4*252个指针是在mymalloc这个函数中赋值的么,如果是的话,每个指针指向的空间是独立的,只要在操作的时候不溢出就不会覆盖.
如果你代码里真是像这样写:temp[4][252]=mymalloc(1,2048*31);想一次性赋值,嗯......确定不是在搞笑?
回复

使用道具 举报

5

主题

277

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1522
金钱
1522
注册时间
2014-5-16
在线时间
217 小时
发表于 2017-5-19 17:56:49 | 显示全部楼层
我想你的意思应该是二维数组指针的定义,申请一片内存,再用一个二维数组来访问.我给你个参考写法:
typedef TEMP (*PATEMP)[252];
PATEMP temp;
temp = (PATEMP)mymalloc(1,2048*31);
temp[0][0].addr = 0;
temp[1][1].addr = 1;
......
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2017-5-19 22:08:25 | 显示全部楼层
不会
回复

使用道具 举报

12

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2014-5-14
在线时间
56 小时
 楼主| 发表于 2017-5-23 08:59:36 | 显示全部楼层
zmingwang 发表于 2017-5-19 17:23
你那4*252个指针是在mymalloc这个函数中赋值的么,如果是的话,每个指针指向的空间是独立的,只要在操作的时候 ...

mymalloc(1,2048*31);
原子哥这个函数的作用就是赋给内存地址的初始值吧?
有梦想,哪里都是你的舞台。哪怕从零开始,日积月累。终将厚积薄发!
回复

使用道具 举报

12

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2014-5-14
在线时间
56 小时
 楼主| 发表于 2017-5-23 09:01:14 | 显示全部楼层
zmingwang 发表于 2017-5-19 17:56
我想你的意思应该是二维数组指针的定义,申请一片内存,再用一个二维数组来访问.我给你个参考写法:
typedef  ...

对,就是这个意思,因为我定义的:temp[4][252]都要存放数据,现在用SDRAM分配内存。原子哥的mymalloc(1,2048*31)这个函数是赋给内存地址首地址,所以有点蒙。
有梦想,哪里都是你的舞台。哪怕从零开始,日积月累。终将厚积薄发!
回复

使用道具 举报

12

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2014-5-14
在线时间
56 小时
 楼主| 发表于 2017-5-23 09:33:22 | 显示全部楼层
zmingwang 发表于 2017-5-19 17:56
我想你的意思应该是二维数组指针的定义,申请一片内存,再用一个二维数组来访问.我给你个参考写法:
typedef  ...

假如我这样请教,你那看如何为数组:temp[4][252]在外部SDRAM申请内存呢?
有梦想,哪里都是你的舞台。哪怕从零开始,日积月累。终将厚积薄发!
回复

使用道具 举报

12

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2014-5-14
在线时间
56 小时
 楼主| 发表于 2017-5-23 09:33:36 | 显示全部楼层
zmingwang 发表于 2017-5-19 17:23
你那4*252个指针是在mymalloc这个函数中赋值的么,如果是的话,每个指针指向的空间是独立的,只要在操作的时候 ...

假如我这样请教,你那看如何为数组:temp[4][252]在外部SDRAM申请内存呢?
有梦想,哪里都是你的舞台。哪怕从零开始,日积月累。终将厚积薄发!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-17 19:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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