alloca()
asigna memoria en la pila en lugar de en el montón, como en el caso de malloc()
. Entonces, cuando regreso de la rutina, la memoria se libera. Entonces, en realidad esto resuelve mi problema de liberar memoria asignada dinámicamente. La liberación de la memoria asignada malloc()
es un gran dolor de cabeza y, si de alguna manera se pierde, conduce a todo tipo de problemas de memoria.
¿Por qué se alloca()
desaconseja el uso a pesar de las características anteriores?
free
(lo que obviamente es una ventaja), no poder alinearlo (obviamente, las asignaciones del montón son mucho más pesadas), etc. La única razón para evitarlo alloca
es para tamaños grandes. Es decir, desperdiciar toneladas de memoria de pila no es una buena idea, además tiene la posibilidad de un desbordamiento de pila. Si este es el caso, considere usar malloca
/freea
alloca
es que la pila no se puede fragmentar como el montón. Esto podría resultar útil para aplicaciones duras de estilo de ejecución permanente en tiempo real, o incluso aplicaciones críticas para la seguridad, ya que la WCRU puede analizarse estáticamente sin recurrir a agrupaciones de memoria personalizadas con su propio conjunto de problemas (sin localidad temporal, recurso subóptimo) utilizar).