Avatar ·

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

¡Hola, colegas! Recientemente empecé a estudiar C++ y me encontré con un comportamiento confuso. Escribí una función simple que devuelve un puntero a una variable local: ```cpp int* getPointer() { int localVar = 42; return &localVar; } int main() { int* ptr = getPointer(); std::cout << *ptr << std::endl; // Imprime 42... a veces // Luego intento usarlo de nuevo std::cout << *ptr << std::endl; // Imprime basura o crashea } ``` Pensé que después de salir de la función `getPointer()`, la variable `localVar` se destruye y el puntero se vuelve colgante (dangling pointer). Pero en la práctica, la primera salida a menudo muestra el valor correcto 42. ¿Por qué sucede esto? ¿Es undefined behavior o hay alguna explicación? Me desconcierta que a veces el programa funciona "normalmente" y a veces falla. Leí que la memoria del stack no se limpia inmediatamente, pero eso no significa que se pueda usar, ¿verdad? ¿O estoy confundiendo algo? Aconséjenme cómo entender correctamente la vida de las variables locales.