这个问题困扰了我一段时间:我在 MSDN 的 DirectX文章中阅读了以下内容:
(应用程序的)析构函数应该释放存储的任何(Direct2D)接口......
DemoApp::~DemoApp()
{
SafeRelease(&m_pDirect2dFactory);
SafeRelease(&m_pRenderTarget);
SafeRelease(&m_pLightSlateGrayBrush);
SafeRelease(&m_pCornflowerBlueBrush);
}
现在,如果所有应用程序的数据都在终止( source )时被释放/释放,为什么我要费心制作一个函数以按顺序/并单独释放它们?这没有道理!
随着时间的推移,我越来越多地看到这一点,这显然让我很烦恼。上面的 MSDN 文章是我第一次遇到这种情况,因此在所有其他情况下提及它是有道理的。
好吧,因为到目前为止我还没有真正问过我的问题,所以它们是:
- 我需要在终止前释放一些东西吗?(请解释原因)
- 为什么 MSDN 中的作者选择这样做呢?
- 答案是否与本机和托管代码不同?IE 在编写 C# 程序时,我是否需要确保在程序结束时处理所有内容?(我不了解 Java,但如果存在处置,我相信其他成员也会对此表示赞赏)。
谢谢!