WINAPI会自动释放附加到控件的内存吗?

时间:2016-12-23 22:26:57

标签: c winapi

关于WIN32 api的简单问题 我有一个使用MySQL C API连接到MySQL的函数,它检索指向结构的指针的链接列表。

因此,在对话框回调中,我通过这些元素填充ListView控件,并将每个元素结构指针附加到ListView中的行。

问题是:我应该在ListView移除LVM_DELETEALLITEMS之后的所有项目时释放指针,例如当我点击刷新按钮时? 或者WIN32 API是否可以为我释放它们?

1 个答案:

答案 0 :(得分:5)

从列表视图中删除项目时,您负责清理通过LVITEM结构的 lParam 成员引用的所有资源。 Windows API不会为您执行此操作。

实际上,Windows API无法为您执行此操作。它无法知道指针是否指向使用newmallocIMalloc或任何其他分配器分配的内存。或者指针可能指向静态分配的数组,并且不需要完全释放。或者它甚至可能不是指针,而是用于排序的哈希值,或者是其他结构的索引。

由于只有您知道,如何解释 lParam ,所有与资源管理相关的责任都在您身上。与some opinions相反,C ++在这里不会帮助你。