0

我有一个结构:

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

谢谢。

4

1 回答 1

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;
于 2013-01-18T06:21:52.393 回答