谁能给我一个使用malloc分配内存的示例代码?IDE: mplab x ide编译器: XC16编译器MCU: PIC24F
提前谢谢。
发布于 2017-02-13 01:55:50
在任何C实现中使用malloc等都是一样的。但是,默认情况下,XC16中的链接器不会分配堆(从堆中获取用于malloc的内存)。您需要告诉链接器在Project Properties|xc16-lc|General|Heap size中分配一个堆。堆的大小必须大于您正在进行的最大内存分配,加上一些开销(有关详细信息,请参阅XC16文档)。
请记住,大量malloc/ralloc活动可能会将堆分成碎片,并且您的堆并不大。所以,请注意这一点。一个好的策略是像LIFO缓冲区一样使用堆(即始终以与分配相反的顺序释放内存)。
发布于 2017-06-29 19:33:04
谁能给我一个使用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编译器目录DOC16-Bit_Language_Tools_Libraries_MANUAL.PDF下的“标准C库”部分。
https://stackoverflow.com/questions/42174342
复制相似问题