Avatar ·

¿Puede estar accesible la memoria de una variable local fuera de su ámbito?

¡Hola a todos! Acabo de empezar a aprender C++ y me encontré con un comportamiento extraño. Escribí una función que devuelve un puntero a una variable local: ```cpp int* getPointer() { int x = 42; return &x; } int main() { int* ptr = getPointer(); std::cout << *ptr << std::endl; // Imprime 42 // ... más tarde ... std::cout << *ptr << std::endl; // Puede imprimir basura } ``` La primera impresión funciona — obtengo 42. Pero he leído que no se debe hacer, porque x es una variable local y su memoria se libera al salir de la función. Sin embargo, el código compila y funciona. ¿Por qué? ¿Y qué sucede realmente con la memoria? ¿Puede el compilador de alguna manera conservar el valor o es solo suerte? ¿Cómo devolver datos correctamente desde una función si necesito devolver un puntero? ¡Gracias de antemano por la explicación! <<>>

Por qué el código "funciona" y cuál es el peligro

Te encontraste con un ejemplo clásico de dangling pointer.