OpenEdv-开源电子网

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

堆区和动态内存管理

[复制链接]

32

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2013-10-25
在线时间
3 小时
发表于 2014-7-9 11:09:39 | 显示全部楼层 |阅读模式
5金钱
刚刚看了一下堆区的知识,堆区是动态内存管理的区域,那我们用动态内存管理的时候要改启动文件里边的Heap_Size 吗?

最佳答案

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

回复【9楼】XavierZhang: --------------------------------- 1.動態配置RAM ,可以重覆給多個地方使用, 省RAM空間 2.即然MDK 有, 當然用MDK的, 必竟那是一個團對設計出來的 3.沒有錯, 就是GLOBE VER
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-7-9 11:09:40 | 显示全部楼层
回复【9楼】XavierZhang:
---------------------------------
1.動態配置RAM ,可以重覆給多個地方使用, 省RAM空間
2.即然MDK 有, 當然用MDK的, 必竟那是一個團對設計出來的
3.沒有錯, 就是GLOBE VER
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-7-9 11:13:31 | 显示全部楼层
對的, 比如  Heap_Size       EQU     0x0008000
就是給 32KB Sizes
回复

使用道具 举报

32

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2013-10-25
在线时间
3 小时
 楼主| 发表于 2014-7-9 13:04:40 | 显示全部楼层
那如果用原子哥malloc,是不是不用管Heap_Size的大小了,因为我看例程里边内部SRAM管理的为40K,但是Heap_Size还是1K。
那不用原子哥的MALLOC要怎么做呢?块大小怎么确定?
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-7-9 13:24:17 | 显示全部楼层
假設你 Headp 設成  8KB
你可以試著  char *p =malloc(1024);
你連嬻去要, 應該可以要到七次, 第八次也許可以, 若不可以會回覆 null
就可以知道 heap 區還有沒有可以用
回复

使用道具 举报

32

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2013-10-25
在线时间
3 小时
 楼主| 发表于 2014-7-9 14:31:00 | 显示全部楼层
回复【4楼】溫柔一刀:
---------------------------------
我刚试了一下,发现u8 *p = (u8*)malloc(1024);不能放到主函数里,放到主函数里编译通不过

..\OBJ\Template.axf: Error: L6915E: Library reports error: __use_no_semihosting was requested, but _ttywrch was referenced
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-7-9 21:02:04 | 显示全部楼层
回复【5楼】XavierZhang:
---------------------------------
mdk自带的malloc,貌似还要其他地方设置吧,你百度下吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-7-10 10:26:45 | 显示全部楼层
你是用MDK嗎? 若是的話只要在 *.s 檔中更改我提的地方就OK了哦, 若是IAR 我就沒有用過了
回复

使用道具 举报

19

主题

234

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
362
金钱
362
注册时间
2014-7-8
在线时间
10 小时
发表于 2014-7-10 10:27:46 | 显示全部楼层
回复【7楼】溫柔一刀:
---------------------------------
不好意思, 補充一下, 
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
這三行也要加
回复

使用道具 举报

32

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2013-10-25
在线时间
3 小时
 楼主| 发表于 2014-7-10 10:37:12 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
百度到了, 要在设置里边加一个微库就可以了。
还有3个问题
1、学了半天内存管理,我还不知道内存管理有什么用?什么情况下要用内存管理?
2、还有既然MDK有自己的内存管理,那原子哥为什么还要写一个呢 ?
3、申请到了内存,如果不释放的话就相当于一个全局变量吗?
回复

使用道具 举报

32

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
266
金钱
266
注册时间
2013-10-25
在线时间
3 小时
 楼主| 发表于 2014-7-10 10:40:21 | 显示全部楼层
回复【8楼】溫柔一刀:
---------------------------------
现在可以了,MDK里边要加一个微库,也证实了heap设置的大小就是MDK malloc可分配的大小
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-6 06:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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