Frei allokierten Speicher vor der Rückgabe einer Funktion

Ich versuche, ein array zurückgeben, mit malloc in einer Funktion:

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 zu frei es, weil mein MCU-heap-Größe ist begrenzt. Aber ich möchte es zurückgeben, damit ich mich nicht befreien kann es in der Funktion, richtig?. Kann ich kostenlos den Speicher außerhalb der Funktion liegt (wo ich die Funktion aufrufen). Gibt es irgendwelche best practices? Vielen Dank im Voraus!

Sie haben, um frei außerhalb der Funktion. Es gibt keine Anforderung, dass malloc Speicher würde müssen freigegeben werden, die innerhalb der Funktion sowieso.
Natürlich. Dies ist der ganze Punkt von malloc. Wenn Sie könnten das nicht tun, hätte es keinen Grund für malloc jemals erstellt wurden.

InformationsquelleAutor KiL | 2012-08-01

Schreibe einen Kommentar