alloca()alloca memoria nello stack anziché nell'heap, come nel caso di malloc(). Quindi, quando torno dalla routine, la memoria viene liberata. Quindi, in realtà, questo risolve il mio problema di liberare memoria allocata dinamicamente. La liberazione della memoria allocata attraverso malloc()è un grosso mal di testa e se in qualche modo mancato porta a tutti i tipi di problemi di memoria.
Perché l'uso di è alloca()scoraggiato nonostante le funzionalità di cui sopra?
free(il che è ovviamente un vantaggio), non capacità di incorporarlo (ovviamente le allocazioni di heap sono molto più pesanti) ed ecc. L'unica ragione per evitare allocaè per le grandi dimensioni. Cioè, sprecare tonnellate di memoria dello stack non è una buona idea, inoltre hai la possibilità di un overflow dello stack. In questo caso, considera l'utilizzo di malloca/freea
allocaè che la pila non può essere frammentata come l'heap. Ciò potrebbe rivelarsi utile per le applicazioni in stile run-forever in tempo reale, o anche per le applicazioni critiche per la sicurezza, poiché la WCRU può quindi essere analizzata staticamente senza ricorrere a pool di memoria personalizzati con il proprio set di problemi (nessuna località temporale, risorsa non ottimale uso).
