在C ++映射值中释放指针字段的问题

时间:2013-01-18 06:14:10

标签: c++ map free

我有一个结构:

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直接启动应用程序时,不会生成此异常。 我错过了什么吗?

感谢。

1 个答案:

答案 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;