Может ли кто-нибудь дать мне пример кода для выделения памяти с помощью malloc? IDE: MPLAB х язь Компилятор: XC16 компилятор MCU: PIC24FКак выделить память с помощью malloc в mplab x ide, компилятор XC16?
Спасибо заранее.
Может ли кто-нибудь дать мне пример кода для выделения памяти с помощью malloc? IDE: MPLAB х язь Компилятор: XC16 компилятор MCU: PIC24FКак выделить память с помощью malloc в mplab x ide, компилятор XC16?
Спасибо заранее.
Использование malloc
и т. Д. Такое же, как в любом варианте C
. По умолчанию, однако, компоновщик в XC16 не будет выделять кучу (из которой берется память для malloc). Вам нужно будет сообщить компоновщику, чтобы выделить кучу в Project Properties|xc16-lc|General|Heap size
. Размер кучи должен быть больше, чем самые большие распределения памяти, которые вы делаете, плюс некоторые накладные расходы (подробности см. В документации XC16).
Имейте в виду, что много действий может фрагментировать кучу, а ваша куча невелика. Поэтому помните об этом. Хорошей стратегией является использование кучи как 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;
}
см также раздел "Стандартные C Библиотеки" под XC16 каталога компилятора, документы, "16-Bit_Language_Tools_Libraries_Manual.pdf".
Похож на проблему [XY] (http://xyproblem.info/). Задайте вопрос о проблеме, которую вы имеете, а не о том, что вы думаете * решение. Поскольку стандартная функция библиотеки, использующая 'malloc()', идентична на любой платформе, которая ее поддерживает. Раздел 10.3 руководства пользователя XC16 указывает на malloc, calloc и ralloc: * «Если вы не используете ни одну из этих функций, , вам не нужно выделять кучу. По умолчанию куча не создается». *. Поэтому, если у вас возникла проблема, возможно, это так, и об этом вы должны были спросить. – Clifford