Область памяти, используемая неуправляемым компонентом для выделения / освобождения - PullRequest
4 голосов
/ 24 июня 2011

Допустим, управляемое приложение .net взаимодействует с неуправляемым компонентом через InterOP.Если я должен отладить проблему с памятью;где именно неуправляемый компонент выделяет память?Это та же куча, которая используется GC (в чем я сомневаюсь) или это какие-то другие области?Я делаю отладку Windbg и задаюсь вопросом, могу ли я посмотреть на распределение неуправляемым компонентом с помощью команд SoS, таких как! Dumpheap?

1 Ответ

3 голосов
/ 24 июня 2011

В Windbg вы можете использовать !heap - для проверки собственной памяти кучи . Куча GC (управляемая) не связана с использованием кучи собственного кода, хотя на некотором уровне я предполагаю, что управляемая куча должна быть отображена (внутри CLR) в одну или несколько собственных куч.

SoS используется исключительно для отладки управляемого кода - WinDbg - это прежде всего инструмент отладки собственного кода.

umdh.exe также может быть полезно, хотя я не пробовал это в приложении в смешанном режиме.

...