你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
其实是我搞错了,链接时提示的错误,是代码空间(FLASH)不够大的意思。当使用malloc()后,编译出的代码超过了我设定的代码空间大小。
所以在IAR里设置堆栈的大小后,就可以用malloc()来动态分配内存了。
不过话说回来,我感觉还是要进行HEAP的初始化的,可能是IAR在__iar_program_start里做了吧,这个以后再去研究了。
评分
查看全部评分