你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
IAR中动态内存的分配问题
[复制链接]
小虾丁
提问时间:2017-1-11 11:48 /
使用的MCU型号为STM32L0x,在IAR中配置HEAP的大小为0x200,在程序中用语句char *p = malloc(10);来动态分配内存,链接时提示section placement failed. 如下图。是程序启动的时候,需要对HEAP进行初始化吗?如果需要,是调用什么函数进行初始化?请求帮助,谢谢了。
赞
0
收藏
1
评论
4
分享
发布时间:2017-1-11 11:48
举报
请先
登录
后回复
4个回答
小虾丁
回答时间:2017-1-12 12:04:31
a0a.1 32b0c
还是我自己解答吧。
其实是我搞错了,链接时提示的错误,是代码空间(FLASH)不够大的意思。当使用malloc()后,编译出的代码超过了我设定的代码空间大小。
所以在IAR里设置堆栈的大小后,就可以用malloc()来动态分配内存了。
不过话说回来,我感觉还是要进行HEAP的初始化的,可能是IAR在__iar_program_start里做了吧,这个以后再去研究了。
评分
参与人数
1
ST金币
+2
收起
理由
zero99
+ 2
结贴奖励
查看全部评分
赞
1
评论
回复
支持
1
反对
0
小虾丁
回答时间:2017-1-11 11:55:32
a0a.1 32b0c
补充:虽然链接失败,但生成的.map文件中已经有HEAP段,起始地址是0x200018b8。是在所用MCU的RAM范围0x20000000~0x20001FFF之内。链接错误提示好像把动态内存分配到其他地址空间里去了。所以我想是IAR里还需要什么其他设置,或者是需要在程序里作HEAP的初始化操作。
赞
0
评论
回复
支持
反对
andypanfan
回答时间:2017-1-12 09:15:39
a0a.1 32b0c
这个问题比较好,我好像没有在 里面malloc过!!!!!希望高手解答一下!!谢谢
赞
0
评论
回复
支持
反对
小小超
回答时间:2017-1-12 10:58:00
a0a.1 32b0c
没用过IAR,Keil好像不用这么麻烦。
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
其实是我搞错了,链接时提示的错误,是代码空间(FLASH)不够大的意思。当使用malloc()后,编译出的代码超过了我设定的代码空间大小。
所以在IAR里设置堆栈的大小后,就可以用malloc()来动态分配内存了。
不过话说回来,我感觉还是要进行HEAP的初始化的,可能是IAR在__iar_program_start里做了吧,这个以后再去研究了。
评分
查看全部评分