有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++中,只是想了解更多关于托管的应用程序和他们处理的内存管理的方式)。