Non sono sicuro che questo sia il forum giusto per questa domanda, ma proverò qui da questa domanda sul linguaggio c ++. Il problema:
Uso una variabile globale nel mio codice che è un oggetto grafico. Il fatto è che quando ho spento il programma ho provato a eliminare tutti gli oggetti creati (in una funzione chiamata close, dato che volevo finire alcuni processi anche da un'API C). Tuttavia, quando ho cancellato quell'oggetto grafico globale ho ricevuto un errore di violazione di accesso alla memoria alla fine del main. La ragione di ciò era che il distruttore veniva chiamato di nuovo quando la main terminava. Questo era qualcosa di cui non ero a conoscenza. Questo mi ha portato a questo programma completamente irrilevante (dal momento che volevo mantenere la variabile fino alla chiusura della GUI), ma per la domanda di programmazione c ++ veramente pertinente; È impossibile distruggere un oggetto c ++ globale prima della fine del main?
Tuttavia, ho letto questo
Statico: oggetti dichiarati in ambito globale o namespace (§6.3.4) e statica dichiarati in funzioni (§12.1.8) o classi (§16.2.12) vengono creati e inizializzati una sola volta (solo) e '' live '' fino alla fine del programma (§15.4.3). Tali oggetti sono chiamati oggetti statici. Un oggetto statico ha lo stesso indirizzo per tutta la durata dell'esecuzione di un programma. Gli oggetti statici possono causare seri problemi in un programma multi-thread perché sono condivisi tra tutti i thread e in genere richiedono il blocco per evitare la corsa dei dati (§5.3.1, §42.3)
Tuttavia, sebbene le versioni di questo testo appaiano ovunque su Internet, la mia domanda non è completamente risolta da questa spiegazione. Anche se può essere implicito, dal momento che le variabili globali sembrano sempre statiche, sarebbe bello avere una risposta diretta.