Ich versuche, ein Array mit malloc in einer Funktion zurückzukehren:Freie zugewiesenen Speicher, bevor Sie eine Funktion zurückgeben
char* queueBulkDequeue(queueADT queue, unsigned int size)
{
unsigned int i;
char* pElements=(char*)malloc(size * sizeof(char));
for (i=0; i<size; i++)
{
*(pElements+i) = queueDequeue(queue);
}
return pElements;
}
Das Problem ist, dass ich frei es brauchen, weil meine MCUs Heap-Größe begrenzt ist . Aber ich möchte es zurückgeben, damit ich es in der Funktion nicht freigeben kann, oder? Kann ich den zugewiesenen Speicher außerhalb der Funktion freigeben (wo ich die Funktion anrufe). Gibt es dafür Best Practices? Vielen Dank im Voraus!
Sie müssen es außerhalb der Funktion freigeben. Es gibt keine Anforderung, dass Malloc'd-Speicher in der Funktion sowieso freigegeben werden muss. – futureelite7
Natürlich. Das ist der ganze Sinn von 'malloc'. Wenn Sie dies nicht tun könnten, gäbe es keinen Grund dafür, dass "malloc" jemals geschaffen wurde. –