有2個二進制文件。一個是本地/非託管C++ DLL,另一個是託管C#EXE。現在我正在做的是在C++ dll中編寫一個函數,並使用malloc在其中分配內存。我導出了這個函數供我的c#模塊使用。當託管代碼加載非託管代碼時是否需要釋放內存
在C++中我所做的:
char* FunctionHavingAllocatedMemory(int i){
char* p = (char*)malloc(100);
.....
//use p and do not free it.
return p;
}
在C#中我所做的:
[DllImport("C++.dll")]
private static extern string FunctionHavingAllocatedMemory(int i);
現在,我的問題是:是否有任何需要在C可用內存++模塊或C#模塊將自動免費它什麼時候函數會返回。爲什麼我在想自從c#是託管模塊它會自動清理內存。
(雖然這是很好的,你可用內存在C++中,但我有一定的限制,我不能釋放內存在C++中,只是想了解更多關於託管的應用程序和他們處理的內存管理的方式)。