OpenEdv-开源电子网

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

在MDK上写STM32的祼机程序,要用malloc申请内存,除了#include外,好像还是要改堆的设置吧?是修改启动文件哪里呢?

[复制链接]

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2011-7-8
在线时间
2 小时
发表于 2012-2-28 10:02:16 | 显示全部楼层 |阅读模式








Head=(struct student *)malloc(student_size);  //Head为指向结构体的指针,student_size=3 

//在此程序里面已经include<stdlib.h>的了。。。。。 
但会有上图的报错。。 

好像在默认的情况下,堆的空间是为零的吧?我机械的改变以下关键字。。。还是不是行。。 
那问问高手,这应该改动什么地方才能用malloc函数呢? 
话说我这个是没用到库操作的。。

Heap_Size       EQU     0x00000200  //这个参数默认是 0x00000000的 

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3 
__heap_base 
Heap_Mem        SPACE   Heap_Size 
__heap_limit 
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-28 11:20:06 | 显示全部楼层
回复【楼主位】wcjaglzf:
---------------------------------
这个我从来没用成功过....
同求...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2011-7-8
在线时间
2 小时
 楼主| 发表于 2012-2-28 11:20:12 | 显示全部楼层
回复【楼主位】wcjaglzf:
---------------------------------
哎。。。。
木回答我。。。
不过我的问题已经解决了。。。
将方法贴出来吧,以敬像我一样的生手。。

这里调用 的malloc是属于微库的函数。。。
要在编译选项中启用微库即可。。见楼主位第二张图。。。怎么回复那里发不了图片的????????
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-28 11:21:51 | 显示全部楼层

 汗...这样解决了...

不过我自己写了一个malloc的管理代码.见此贴:自己写的STM32 内存管理 实现了malloc,free,remalloc等函数  

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2011-7-8
在线时间
2 小时
 楼主| 发表于 2012-2-28 11:30:59 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
已经膜拜过尊帖了。。。

不过我是刚刚学习内存管理这些东西的,先学习标准库的函数再算吧,况且标准库的函数网上也较多资料。。。
回复 支持 反对

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2011-7-8
在线时间
2 小时
 楼主| 发表于 2012-2-28 11:32:38 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------

在回复这里首次编辑是不是发不了图片的啊,要重复编辑才行的吗。。。

论坛速度觉得飞快的说。。。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-28 11:34:15 | 显示全部楼层
可以的,你直接回复属于简单回复,是不能上传附件和图片的.
你要点击左侧的第二个按钮:回复文章. 这样就可以回复附件和图片了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

27

主题

274

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
472
金钱
472
注册时间
2011-11-2
在线时间
11 小时
发表于 2012-2-28 20:09:12 | 显示全部楼层
从前也一直没用明白MALLCO过
回复 支持 反对

使用道具 举报

1

主题

22

帖子

1

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2012-3-29
在线时间
0 小时
发表于 2012-8-18 18:16:51 | 显示全部楼层
1.需要查看KEIL编译器的帮助文件,使用MALLOC关键词,可以在第二项中找到关于MALLOC函数的使用方法。
2.一般情况下采用第一种堆(HEAP)方式,只需要在启动文件中将HEAP定义为自己想定义的大小。设置为4K。应该够用了
3.包含头文件<stdlib.h>.

在头文件中

默认为
Heap_Size       EQU     0x0000
0200
我们改为
Heap_Size       EQU     0x00001000  //改变malloc大小
回复 支持 反对

使用道具 举报

1

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2012-3-18
在线时间
2 小时
发表于 2012-8-18 22:12:51 | 显示全部楼层
你可以使用newlib……实现它没实现的几个桩函数就可以使用整个库了……
回复 支持 反对

使用道具 举报

52

主题

214

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2012-4-26
在线时间
17 小时
发表于 2012-8-20 21:02:56 | 显示全部楼层
回复【9楼】zhanggenftf:
---------------------------------
请问为什么要将

Heap_Size       EQU     0x00000200
我们改为
Heap_Size       EQU     0x00001000  //改变malloc大小
努力?奋斗
回复 支持 反对

使用道具 举报

1

主题

22

帖子

1

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2012-3-29
在线时间
0 小时
发表于 2012-10-4 01:27:06 | 显示全部楼层
回复【11楼】原味_郭:
---------------------------------
增大了堆栈的大小。
回复 支持 反对

使用道具 举报

12

主题

77

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2013-4-4
在线时间
17 小时
发表于 2013-8-27 19:52:02 | 显示全部楼层
回复【9楼】zhanggenftf:
---------------------------------
这个是在哪里改的啊?我怎么找不到啊?
技术的乐趣在于分享。。。。
回复 支持 反对

使用道具 举报

1

主题

22

帖子

1

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2012-3-29
在线时间
0 小时
发表于 2013-9-17 16:46:21 | 显示全部楼层
回复【13楼】zf:
---------------------------------
在启动文件里。
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2013-12-3
在线时间
1 小时
发表于 2014-6-6 11:56:04 | 显示全部楼层
回复【3楼】wcjaglzf:
---------------------------------
Good! Thanks!
回复 支持 反对

使用道具 举报

4

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
299
金钱
299
注册时间
2014-10-26
在线时间
29 小时
发表于 2014-11-12 21:41:14 | 显示全部楼层
想一想,如果把剩下的内存空间分配给HEAP,然后需要使用SST25VF、网络收发等缓冲很大的时候,那就方便多了
回复 支持 反对

使用道具 举报

22

主题

73

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
416
金钱
416
注册时间
2014-2-27
在线时间
71 小时
发表于 2015-5-6 11:31:47 | 显示全部楼层
回复【9楼】zhanggenftf:
---------------------------------
谢谢,灰常感谢
回复 支持 反对

使用道具 举报

86

主题

983

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1848
金钱
1848
注册时间
2013-4-15
在线时间
163 小时
发表于 2015-8-27 10:33:39 | 显示全部楼层
回复【12楼】zhanggenftf:
---------------------------------
堆,不是堆栈
合肥-文盲
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 22:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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