有人能给我一个使用malloc分配内存的示例代码吗? IDE:mplab x ide 编译器:XC16编译器 MCU:PIC24F
提前致谢。
答案 0 :(得分:1)
使用malloc
等与任何C
实施中的相同。但是,默认情况下,XC16中的链接器不会分配堆(从中获取malloc的内存)。您需要告诉链接器在Project Properties|xc16-lc|General|Heap size
中分配堆。堆的大小必须大于您正在进行的最大内存分配,以及一些开销(有关详细信息,请参阅XC16文档)。
请记住,很多malloc/ralloc
活动可能会使堆碎片化,并且堆不大。所以,要注意这一点。一个好的策略是像LIFO缓冲区一样使用堆(即总是按照分配的相反顺序释放内存)。
答案 1 :(得分:0)
有人能给我一个使用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;
}
另请参阅&#34;标准C库&#34;在XC16编译器目录下,docs&#34; 16-Bit_Language_Tools_Libraries_Manual.pdf&#34;。