我有一个 Win32 TreeCtrl,用户可以在其中重命名树标签。我处理 TVN_ENDLABELEDIT 消息来执行此操作。
在某些情况下,我需要更改用户输入的文本。基本上用户可以在编辑过程中输入一个短名称,我想用更长的文本替换它。
为此,我更改了在 TVN_ENDLABELEDIT 期间收到的 TVITEM 结构的 pszText 成员。我在这里做了一个指针替换,因为原始内存可能太小而无法进行简单的类似 strcpy 的操作。
但是我不知道如何释放原始 pszText 成员。基本上是因为不知道它是用 malloc() 还是 new 创建的……所以我不能调用适当的释放器。显然 Win32 不会为旧的 pszText 调用释放器,因为指针已被替换。所以如果我不解除分配,就会有内存泄漏。
知道 Win32 如何分配这些结构以及处理上述情况的正确方法是什么?