任何人都可以給我一個示例代碼使用malloc分配內存? IDE:mplab x ide 編譯器:XC16編譯器 MCU:PIC24F如何在mplab x ide,XC16編譯器中使用malloc分配內存?
在此先感謝。
任何人都可以給我一個示例代碼使用malloc分配內存? IDE:mplab x ide 編譯器:XC16編譯器 MCU:PIC24F如何在mplab x ide,XC16編譯器中使用malloc分配內存?
在此先感謝。
使用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編譯目錄,文件, 「16 Bit_Language_Tools_Libraries_Manual.pdf」 下截面 「標準C庫」。
看起來像[XY問題](http://xyproblem.info/)。問一個關於你所遇到的問題的問題,而不是關於你認爲的解決方案。作爲使用'malloc()'的標準庫函數,在任何支持它的平臺上都是相同的。 XC16用戶手冊的第10.3節針對malloc,calloc和ralloc聲明:*「如果您不使用這些函數中的任何一個,則 則不需要分配堆。默認情況下,不會創建堆。 *。所以如果你遇到了問題,那就是你應該問的問題。 – Clifford