Проблема с освобождением поля указателя в значении карты C ++

У меня есть структура:

typedef struct
{
char *ptr;
} A;

И карта

typedef std::map<std::wstring, A> myMap;

Я выделил память для поля ptr, используя malloc при заполнении карты.
Чтобы предотвратить утечки памяти при очистке карты, у меня есть следующий код (actualMap — это карта, которую я должен очистить):

for (myMap::iterator iter = actualMap.begin(); iter != actualMap.end(); ++iter)
{
Free((iter->second).ptr);
}
actualMap.clear();

Однако, когда я обычно запускаю приложение, я получаю исключение во время выполнения Free. Это исключение не генерируется, когда я запускаю приложение напрямую через VS2010.
Я что-то пропустил?

Благодарю.

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;
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]