有两个二进制文件。一个是本地/非托管的C++ dll,另一个是托管的C# exe。现在我正在编写一个函数来使用malloc在c++ dll中分配内存。我导出了这个函数以供我的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++中释放内存。只是想更多地了解托管应用程序及其处理内存管理的方式)。