gpt4 book ai didi

c++ - 在 CRichEditCtrl 上使用表情符号时内存泄漏

转载 作者:可可西里 更新时间:2023-11-01 13:14:01 26 4
gpt4 key购买 nike

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

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

这非常有效:位图(表情符号)在 CRichEditCtrl 窗口上绘制,并且像处理字符一样处理。

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

最佳答案

OleCreateStaticFromData 返回您传递给 Rich Edit 控件的 COM 指针。此 COM 指针已应用 AddRef,因此您必须在将其传递给控件后调用 Release,以表示您将不再直接访问它.控件在销毁时也会执行 Release,这会导致 COM 对象被删除。

您还可以将返回的指针存储在智能指针类中 _com_ptr_tCComPtr它会自动释放它。

关于c++ - 在 CRichEditCtrl 上使用表情符号时内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2946256/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com