string, map, _bstr_t и утечки памяти
От: Всеволод Россия  
Дата: 26.11.03 09:20
Оценка:
Всем привет !

Не могу понять, в чем дело. Есть следующий код
   // имеем map
   map <string, string> m_mapKey2Category;

   ...
  
   // получаем две строки в виде _bstr_t
   _bstr_t sCategory=GetKey(pCategory);
   _bstr_t bsKey=ItemName(atr);

   // засовываем их в map
   m_mapKey2Category[string(bsKey)]=string(sCategory);

   ...

   // потом освобождаем
   m_mapKey2Category.clear();


При завершении программы появляются утечки памяти следующего содержания

Detected memory leaks!
Dumping objects ->
{2419} normal block at 0x06EBD318, 48 bytes long.
Data: <f33a788d-d9f3-42> 66 33 33 61 37 38 38 64 2D 64 39 66 33 2D 34 32
{2418} normal block at 0x06EBD290, 72 bytes long.
Data: < r 8M r > D8 72 01 01 38 4D EB 06 D8 72 01 01 CD CD CD CD
{2413} normal block at 0x06EBD220, 48 bytes long.
Data: <de7c1087-6b38-4c> 64 65 37 63 31 30 38 37 2D 36 62 33 38 2D 34 63
{2412} normal block at 0x06EBD198, 72 bytes long.
Data: < r p r > D8 72 01 01 70 96 EB 06 D8 72 01 01 CD CD CD CD

И так далее...


Судя по содержанию — это строки из map.

Если написать
   m_mapKey2Category[string("123")]=string("Bla-bla-bla");

утечки чудесным образом изчезают.

Коллеги, подскажите, где я неправ ! На кого грешить, на string или на _bstr_t ? Или на map ? (Хотя он тут явно не причем)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.