繁体   English   中英

如何在mplab Xide,XC16编译器中使用malloc分配内存?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM