谁能给我一个使用malloc分配内存的示例代码?IDE:mplab x ide 编译器:XC16 编译器 MCU:PIC24F
提前致谢。
谁能给我一个使用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 编译器目录下的“标准 C 库”部分,文档,“16-Bit_Language_Tools_Libraries_Manual.pdf”。
使用etc. 与任何实现malloc
中的相同。C
然而,默认情况下,XC16 中的链接器不会分配堆(从中获取 malloc 的内存)。您需要告诉链接器在Project Properties|xc16-lc|General|Heap size
. 堆的大小必须大于您正在分配的最大内存,加上一些开销(有关详细信息,请参阅 XC16 文档)。
请记住,大量malloc/ralloc
活动可能会使堆碎片化,而您的堆并不大。所以,请注意这一点。一个好的策略是像使用 LIFO 缓冲区一样使用堆(即总是以与分配相反的顺序释放内存)。