Considere el siguiente código:C - Devolver un puntero char sin malloc
char* pointerTesting(void) {
char* test = "hello";
return test;
}
int main() {
char* string = pointerTesting();
printf("string: %s\n", string);
}
Esto no tiene ningún problema en la compilación y ejecución. Sin embargo, en mi entender, esto no debería funcionar, ya que la memoria asignada al puntero test
está en la pila y se destruye al volver a la principal.
Entonces la pregunta es, ¿cómo funciona esto sin un malloc en la función pointerTesting()?
Consulte http://stackoverflow.com/questions/2589949/c-string-literals-where-do-theygo y un montón de preguntas similares sobre este tema en stackoverflow. – jman
El * puntero * está asignado en la pila (para implementaciones típicas), pero no está devolviendo el puntero, solo una copia si es su valor. Es similar a 'int n = 42; return n; '. Es la asignación de lo que señala que es relevante. –