【发布时间】:2016-03-28 11:28:44
【问题描述】:
在使用 Direct2D 的 MFC 应用程序中,我有非常简单的代码:
//在ctor中:
EnableD2DSupport();
m_pBlackBrush = new CD2DSolidColorBrush(GetRenderTarget(), D2D1::ColorF(D2D1::ColorF::Black));
现在的问题是,我应该在 m_pBlackBrush 上调用 delete 吗?如果是在哪里?我试图在析构函数中调用 delete ,但我收到错误消息,说存在写访问冲突。任何人都知道我是应该删除这个画笔还是干脆离开它(这似乎很奇怪)?
【问题讨论】:
-
确定你需要
delete这个对象,当你使用new创建它时,否则你会有内存泄漏。 -
这可能取决于你如何使用它。我记得 MFC 对对象所有权有奇怪的想法,所以,如果你把画笔放在设备上下文中,它可能会假设所有权。抱歉,我不记得细节了。
-
@πάνταῥεῖ 你看了我的帖子了吗?我试图调用删除,但我收到错误,这就是我在这里问这个问题的原因
-
您可以通过确保最后没有在任何设备上下文或任何其他对象集合的成员中选择画笔来解决所有权问题。 那么,就
delete吧。 -
@Thereisnothingwecando 我只能阅读实际提供的内容。你没有提到一个关于你用那个指针进一步做什么的字符。就像您的代码 sn-p 一样,您必须自己
delete对象以避免内存泄漏。