C++ 在CRICHEDITCRL上使用表情符号时内存泄漏

C++ 在CRICHEDITCRL上使用表情符号时内存泄漏,c++,c,windows,mfc,C++,C,Windows,Mfc,我正在开发一个文本编辑器类(用于聊天应用程序),它基于CRichEditCtrl(MFC)并支持表情符号 加载表情符号的位图后,我使用函数olcreatestaticfromdata将其插入CRichEditCtrl。之后,我只是删除自己分配的位图对象。我可以验证(使用GDIView实用程序)我分配的所有资源是否已正确释放 这非常有效:位图(图释)绘制在CRichEditCtrl窗口上,处理方式与字符一样 我的问题是,我不知道如何释放olCreateStaticFromData分配的内存(内部)

我正在开发一个文本编辑器类(用于聊天应用程序),它基于
CRichEditCtrl
(MFC)并支持表情符号

加载表情符号的位图后,我使用函数
olcreatestaticfromdata
将其插入
CRichEditCtrl
。之后,我只是删除自己分配的位图对象。我可以验证(使用
GDIView
实用程序)我分配的所有资源是否已正确释放

这非常有效:位图(图释)绘制在
CRichEditCtrl
窗口上,处理方式与字符一样


我的问题是,我不知道如何释放
olCreateStaticFromData
分配的内存(内部)来管理位图(图释)。即使我删除了
CRichEditCtrl
对象,为使用的任何表情符号分配的内存也不会释放。我想知道如何解决这个问题。这是MFC的问题还是我做错了什么?

OleCreateStaticFromData
返回一个COM指针,并将其传递给Rich Edit控件。此COM指针应用了一个
AddRef
,因此在将其传递给控件后,必须调用
Release
,以表示不再直接访问它。当控件被销毁时,它还将执行
释放
,这将导致COM对象被删除

您还可以将返回的指针存储在智能指针类中,或者它将自动释放它