誰かが c++ のメモリ解放プロセスに光を当てることができるかどうか疑問に思っていました。
コンストラクターが最初に実行され、そのデストラクタが最後に実行されるように、静的に宣言する構造体がある場合:
struct initializer execute_before_and_after_main {
initializer() { init(); }
~initializer() { cleanup(); }
}
static initializer execute_around_main;
そして、私は次のようなものを持っています:
class my_class {
my_object objects[100];
}
extern my_class gobal_my_class;
my_class global_my_class;
main はここでは重要ではありません:
int main (int argc, char* argv[]) {
....
}
cleanup()
が呼び出されたとき、objects
配列には割り当て解除された/無効なメモリが含まれていますか? C ++がここで実装する初期化/破棄の標準的なシーケンスはありますか?
ありがとう
編集:このタイプのコードはおそらくベストプラクティスではないことを理解していますが、動作が定義されているかどうかはまだ疑問です。