А сейчас он показывает, что ошибка только в _malloc_dbg и как более точно локализовать место утечки памяти, я не знаю.
Я не пользуюсь Bounds Checker-ом (у меня нету версии для VS .Net 2003). Я отлавливаю утечки с помощью визуала. В окне Output после завершения програмы, crt выводит дамп всей неосвобождённой памяти. Это можна сделат и в процесе работы программы функцией _CrtDumpMemoryLeaks.
Пример того что выводиться в отладчик.
{47865} normal block at 0x01544700, 24 bytes long.
Data: < GT GT GT > 00 47 54 01 00 47 54 01 00 47 54 01 CD CD CD CD
Так вот, тут число в скобках 47865 - порядковый номер вызова выделения памяти в программе. На этот номер можна поставить точку останова функцией _CrtSetBreakAlloc.
Если порядок выделения памяти при разных запусках одинаков, то в начале программы надо вызвать _CrtSetBreakAlloc(47865) и при выделении памяти в 47865 раз сработает брейкпоинт.
А дальше по обстоятельствам