Es gibt 2 Binärdateien. Einer ist native/nicht verwaltete C++ - DLL und andere ist C# exe verwaltet. Jetzt schreibe ich eine Funktion in C++ dll und reserviere Speicher darin mit malloc. Ich habe diese Funktion exportiert, um von meinem C# -Modul verwendet zu werden.Gibt es eine Notwendigkeit, Speicher in nicht verwaltetem Code freizugeben, wenn es von verwaltetem Code geladen wird
In C++ Ich habe:
char* FunctionHavingAllocatedMemory(int i){
char* p = (char*)malloc(100);
.....
//use p and do not free it.
return p;
}
In C# ich getan habe:
[DllImport("C++.dll")]
private static extern string FunctionHavingAllocatedMemory(int i);
Nun, meine Frage ist: Gibt es eine Notwendigkeit, den freien Speicher in C++ Modul oder C# Modul automatisch frei wenn die Funktion zurückkehrt. Warum ich denke, ist, da C# verwaltetes Modul ist, wird es automatisch den Speicher aufräumen.
(Obwohl es gut ist, haben Sie freien Speicher in C++, aber ich habe bestimmte Einschränkungen, dass ich nicht Speicher in C++ freigeben kann. Ich wollte nur mehr über verwaltete Anwendungen und die Art, wie sie Speicherverwaltung behandeln).