2010-07-12 47 views

回答

0

你大概的意思看通過代碼在DLL中分配的內存。

我認爲這是不可能的。如果DLL分配內存,並且DLL是用C++編寫的,並且C/C++運行時間是動態鏈接的(即作爲DLL),那麼它將使用與主應用程序相同的C/C++運行時間,並分配所有的DLL內存將分配在同一個堆上。

即使DLL將靜態鏈接C/C++運行時間,或者使用不同的語言編寫DLL,它也可能使用相同的默認Windows堆。如果你自己可以控制DLL,你可以嘗試爲你的DLL實現一個自定義的內存管理器(在C++中這意味着覆蓋新的和刪除,總共6個全局操作符),嘗試使用不同的(即非 - 默認)Windows堆,然後使用低級別Windows調試器WinDbg的heapwalk方法,但要完成這一切將非常困難。或者您的DLL的自定義內存管理器可以使用VirtualAlloc(或不固定的,然後記錄虛擬地址)在固定地址分配內存。然後你可以在正常的進程內存轉儲中查看這個地址空間。

相關問題