首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mplab x ide,XC16编译器中使用malloc来分配内存?

如何在mplab x ide,XC16编译器中使用malloc来分配内存?
EN

Stack Overflow用户
提问于 2017-02-11 17:33:30
回答 2查看 2K关注 0票数 1

谁能给我一个使用malloc分配内存的示例代码?IDE: mplab x ide编译器: XC16编译器MCU: PIC24F

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-02-13 01:55:50

在任何C实现中使用malloc等都是一样的。但是,默认情况下,XC16中的链接器不会分配堆(从堆中获取用于malloc的内存)。您需要告诉链接器在Project Properties|xc16-lc|General|Heap size中分配一个堆。堆的大小必须大于您正在进行的最大内存分配,加上一些开销(有关详细信息,请参阅XC16文档)。

请记住,大量malloc/ralloc活动可能会将堆分成碎片,并且您的堆并不大。所以,请注意这一点。一个好的策略是像LIFO缓冲区一样使用堆(即始终以与分配相反的顺序释放内存)。

票数 1
EN

Stack Overflow用户

发布于 2017-06-29 19:33:04

谁能给我一个使用malloc分配内存的示例代码?

代码语言:javascript
复制
/* 
     * 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库”部分。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42174342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档