¿Cuál es la diferencia entre esto:C++: definición de matriz local frente a una llamada malloc
somefunction() {
...
char *output;
output = (char *) malloc((len * 2) + 1);
...
}
y esto:
somefunction() {
...
char output[(len * 2) + 1];
...
}
Cuando uno es más apropiado que el otro?
gracias por todas sus respuestas. aquí hay un resumen:
- ex. 1 es la asignación de pila
- ej. 2 es la asignación de pila
- hay una limitación de tamaño en la pila, lo utilizan para asignaciones más pequeñas
- tienes que asignación del montón libre, o que se escape
- la asignación de pila no es accesible una vez que la función termina
- la asignación del montón es accesible hasta que lo libere (o la aplicación termina)
- VLA no es parte de C++ estándar
correcciones son bienvenidos.
aquí es una explicación de la diferencia entre el montón vs pila:
What and where are the stack and heap?
Debería consultar su libro en C++. Si no tiene un libro en C++, le recomiendo que obtenga uno de los textos para principiantes que figuran en [La guía y la lista completa de libros de C++] (http://stackoverflow.com/questions/388242/the-definitive-c-book -guía y lista). –
Además, la pregunta depende completamente de cómo se define 'len'; si no es una constante, entonces el segundo ejemplo de código está mal formado C++. –
len es un int y está asignado al resultado de strlen dentro de la función. – Gush