IAR中动态内存的分配问题
使用的MCU型号为STM32L0x,在IAR中配置HEAP的大小为0x200,在程序中用语句char *p = malloc(10);来动态分配内存,链接时提示section placement failed. 如下图。是程序启动的时候,需要对HEAP进行初始化吗?如果需要,是调用什么函数进行初始化?请求帮助,谢谢了。还是我自己解答吧。:)
其实是我搞错了,链接时提示的错误,是代码空间(FLASH)不够大的意思。当使用malloc()后,编译出的代码超过了我设定的代码空间大小。
所以在IAR里设置堆栈的大小后,就可以用malloc()来动态分配内存了。
不过话说回来,我感觉还是要进行HEAP的初始化的,可能是IAR在__iar_program_start里做了吧,这个以后再去研究了。 补充:虽然链接失败,但生成的.map文件中已经有HEAP段,起始地址是0x200018b8。是在所用MCU的RAM范围0x20000000~0x20001FFF之内。链接错误提示好像把动态内存分配到其他地址空间里去了。所以我想是IAR里还需要什么其他设置,或者是需要在程序里作HEAP的初始化操作。
这个问题比较好,我好像没有在 里面malloc过!!!!!希望高手解答一下!!谢谢 没用过IAR,Keil好像不用这么麻烦。
页:
[1]