У меня есть DLL, написанная на C ++ Builder (2006), и я вызываю одну функцию в DLL из приложения .NET.
Проблема в том, что когда я закрываю приложение .NET (и DLL отсоединяется от него), я получаю ошибку CodeGuard, говорящую о том, что обнаружены утечки ресурсов (и я вижу утечки в файле журнала CodeGuard). Я также вижу, как LoaderLock MDA появляется в Visual Studio при освобождении DLL (возможно, по той же причине?).
Теперь я на 99% уверен, что освобождаю всю память, которую я использую в функции DLL. На самом деле, я попытался создать фиктивную DLL с функцией с таким же именем, которая абсолютно ничего не делает, и все еще получала утечки ресурсов, когда DLL выгружалась из приложения .NET.
На данный момент я подозреваю только то, что я использую VCL, встроенный в DLL. Есть ли какая-то функция деинициализации, которую мне нужно явно вызывать при отсоединении от DLL? Что может происходить?
p.s. Адреса памяти из стека вызовов, указанные в файле журнала CodeGuard, кажутся намного превосходящими все, что я вижу в своем файле карты.