我有一个结构:
typedef struct
{
char *ptr;
} A;
和地图
typedef std::map<std::wstring, A> myMap;
我在填充地图时使用malloc为ptr字段分配了内存。 为了防止在清除地图时出现内存泄漏,我有以下代码(actualMap是我必须清除的实际地图):
for (myMap::iterator iter = actualMap.begin(); iter != actualMap.end(); ++iter)
{
Free((iter->second).ptr);
}
actualMap.clear();
然而,当我正常启动应用程序时,我正在执行Free时遇到异常。当我通过VS2010直接启动应用程序时,不会生成此异常。 我错过了什么吗?
感谢。
答案 0 :(得分:0)
我建议您使用C ++ std :: string而不是原始指针
struct A
{
std::wstring data;
};
std::map<std::wstring, A> myMap;
actualMap.clear();
A只有一个指向字符串的指针,因此myMap可以是:
std::map<std::wstring, std::wstring> myMap;