混合 .NET アセンブリ (つまり、マネージド/アンマネージド C++ アセンブリが混在していることを意味します) の CLR および CRT の初期化の順序についていくつか質問があります。
したがって、混合モードのアセンブリ dll ファイルがあり、Assembly.Load を介して読み込まれるとします。マネージド コードが最初に呼び出されるまで、静的ネイティブ オブジェクトは初期化または呼び出されないことに気付きました。わかった。したがって、起動時に CLR コードが最初に初期化され、CRT の初期化が最後に呼び出されると考えています。シャットダウンの順番は?CRT のシャットダウンが最初で、CLR のシャットダウンが最後ですか?
では、こんな流れでしょうか。
start of program lifetime
initilialize CLR
...initilialize CRT
...construct native static instances
... program runs....
...shutdown CLR
...destruct native static instances
shutdown CLR
end of program lifetime
それとも別の順番ですか?
私の質問は、実行可能ファイル (.exe) である混合モード アセンブリにも当てはまります。似てる?
start of program lifetime
initilialize CLR
...initilialize CRT
...construct native static instances
... program runs....
...shutdown CLR
...destruct native static instances
shutdown CLR
end of program lifetime