使用的MCU型号为STM32L0x,在IAR中配置HEAP的大小为0x200,在程序中用语句char *p = malloc(10);来动态分配内存,链接时提示section placement failed. 如下图。是程序启动的时候,需要对HEAP进行初始化吗?如果需要,是调用什么函数进行初始化?请求帮助,谢谢了。
其实是我搞错了,链接时提示的错误,是代码空间(FLASH)不够大的意思。当使用malloc()后,编译出的代码超过了我设定的代码空间大小。
所以在IAR里设置堆栈的大小后,就可以用malloc()来动态分配内存了。
不过话说回来,我感觉还是要进行HEAP的初始化的,可能是IAR在__iar_program_start里做了吧,这个以后再去研究了。
评分
查看全部评分