[英]Why is the XC16 compiler removing inline function if the definition comes after use?
[英]How to allocate memory using malloc in mplab x ide, XC16 compiler?
谁能给我一个使用malloc分配内存的示例代码? IDE:mplab x ide编译器:XC16编译器MCU:PIC24F
提前致谢。
使用malloc
等与任何C
实现相同。 但是,默认情况下,XC16中的链接器不会分配堆(从中获取malloc的内存)。 您将需要告诉链接器以Project Properties|xc16-lc|General|Heap size
分配堆。 堆的大小必须大于要分配的最大内存,再加上一些开销(有关详细信息,请参见XC16文档)。
请记住,许多malloc/ralloc
活动可能会使堆碎片化,并且堆并不大。 因此,请注意这一点。 好的策略是像LIFO缓冲区一样使用堆(即,始终按分配时的相反顺序释放内存)。
谁能给我一个使用malloc分配内存的示例代码?
/*
* XC16 v1.31
* PIC24FJ128GB606
* MPLAB X IDE v3.65
* Simulator Debugger
*/
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
volatile int i=0;
int main ()
{
volatile int *ptr= malloc(100*sizeof(int));
if (ptr == NULL)
printf ("Cannot allocate memory\n");
else
{
printf ("Memory Allocated successfully \n");
for (i=0; i<(100*sizeof(int)); i++)
{
*ptr=i;
printf ("Pointer value=%d \t i=%d\n",*ptr++,i);
}
}
free ((void *)ptr);
return 0;
}
另请参阅XC16编译器目录docs下的“标准C库”部分,“ 16-Bit_Language_Tools_Libraries_Manual.pdf”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.