この質問はしばらくの間私を悩ませてきました:私はMSDNのDirectXの記事で次のことを読みました:
(アプリケーションの)デストラクタは、保存されている(Direct2D)インターフェイスを解放する必要があります...
DemoApp::~DemoApp()
{
SafeRelease(&m_pDirect2dFactory);
SafeRelease(&m_pRenderTarget);
SafeRelease(&m_pLightSlateGrayBrush);
SafeRelease(&m_pCornflowerBlueBrush);
}
さて、アプリケーションのすべてのデータが終了時に解放/割り当て解除されている場合(ソース)、なぜ関数を順番に作成して個別に解放するのに問題が発生するのでしょうか?意味がない!
私はこれを時間の経過とともにますます見続けています、そしてそれは明らかに私を本当に悩ませています。上記のMSDNの記事は、私がこれに遭遇したのは初めてなので、他のすべてのケースについて言及するのは理にかなっています。
さて、これまで私は実際に質問をしていなかったので、ここにあります:
- 終了する前に何かをリリースする必要がありますか?(理由を説明してください)
- なぜMSDNの作者はそれを選択したのですか?
- 答えはネイティブおよびマネージコードとは異なりますか?IE C#プログラムを作成している間、プログラムの最後にすべてが破棄されていることを確認する必要がありますか?(私はJavaについては知りませんが、そこに処分があれば、他のメンバーもその答えを歓迎すると確信しています)。
ありがとうございました!