Destructors of global variables are not called
Los mantenedores suelen responder en 1 día
@nunoplopes ya está trabajando en esto.
Desde el 8/10/2026.
- #497 de @copilot-swe-agent — cerrado sin fusionar
Evaluación
Este issue todavía no se ha evaluado.
Descripción
#include <iostream>
struct SideEffectTracker {
int name;
explicit SideEffectTracker(int tag) : name(tag) {
std::cout << "[CONSTRUCTOR] " << name << " initialized.\n";
}
~SideEffectTracker() {
std::cout << "[DESTRUCTOR] " << name << " destroyed.\n";
}
void touch() const {
std::cout << "[USAGE] " << name << " accessed.\n";
}
};
// 1. Global statics (Initialized before main() in order of declaration)
SideEffectTracker g_global1(1);
SideEffectTracker g_global2(2);
void run_local_statics() {
// 2. Function-local static (Lazy initialization: only runs on first call)
static SideEffectTracker s_local_static(3);
s_local_static.touch();
}
int main() {
std::cout << "=== Entering main() ===\n\n";
g_global1.touch();
std::cout << "\n-- First call to run_local_statics() --\n";
run_local_statics();
std::cout << "\n-- Second call to run_local_statics() --\n";
run_local_statics();
std::cout << "\n=== Exiting main() ===\n";
return 0;
// Static destructors run after this line in REVERSE order of construction
}
should print:
[CONSTRUCTOR] 1 initialized.
[CONSTRUCTOR] 2 initialized.
=== Entering main() ===
[USAGE] 1 accessed.
-- First call to run_local_statics() --
[CONSTRUCTOR] 3 initialized.
[USAGE] 3 accessed.
-- Second call to run_local_statics() --
[USAGE] 3 accessed.
=== Exiting main() ===
[DESTRUCTOR] 3 destroyed.
[DESTRUCTOR] 2 destroyed.
[DESTRUCTOR] 1 destroyed.
- Lenguaje dominante
- Rust
- Estrellas
- 310
- Forks
- 18
- Merge medio
- 10 h 18 min
- PR fusionados (30 d)
- 125
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Cpp2Rust/cpp2rust
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 Medio día Aptitud para principiantes 55/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 56/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 1-2 días Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 56/100
Los mantenedores suelen responder en 1 día
Todos los issues de Cpp2Rust/cpp2rust
Issues similares
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Los mantenedores suelen responder en 1 día
-
🐞 bug 🧩 bevy_gantz_egui
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
nannou-org/gantz#500 ·
Los mantenedores suelen responder en 1 día
-
[Feature]: Fedora 45 repoAbiertoenhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
metasequoiaime/msime#10989 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
fritzprix/libr-agent#2612 ·
Los mantenedores suelen responder en 1 día
-
find: -printf %h drops a doubled slashPosiblemente ocupada @qodelicious la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día