C++ MFC中CStringList的内存清理与内存泄漏问题咨询
CStringList 内存管理疑问解答
你的操作不会导致内存泄漏,完全可以依赖MFC框架完成内存的正确清理,不需要手动释放相关内存,原因如下:
CString是MFC提供的智能字符串类,它内部封装了内存管理逻辑,自身的析构函数会自动释放持有的字符串内存——不管是栈上声明的CString对象,还是存储在CStringList中的对象,都会遵循这个规则。- 调用
AddTail()向CStringList添加元素时,列表会创建新的CString对象并拷贝传入的CString内容,这些列表内的CString对象由列表负责管理。 - 当你调用
RemoveAll()时,CStringList会遍历所有元素:先调用每个CString对象的析构函数释放其内部的字符串内存,再销毁列表节点本身占用的内存。 - 退一步说,即使你忘记手动调用
RemoveAll(),当你的类对象销毁时,成员变量m_ListOfSz的析构函数也会自动触发RemoveAll()的逻辑,完成所有内存清理。
内容的提问来源于stack exchange,提问作者Léa Massiot
相关产品推荐
相关产品推荐

