c#调用c++DLL,关于非托管DLL资源怎么在使用完后释放

c#调用c++DLL,关于非托管DLL资源如何在使用完后释放
在一个大型长时间运行的c#编写的程序中,大量的调用c++的DLL,如果没有及时的释放,则系统早晚会崩溃,想请教一下大家有没有好的解决方法。
------解决思路----------------------
C++那里提供释放的函数
C#用Dispose方法封装

参考Windows API的设计
你看有ReadFile就有CloseFile,有OpenConnection就有CloseConnection,有LoadLibrary就有FreeLibrary。你的dll本身要支持释放才行。
------解决思路----------------------
引用:
Quote: 引用:

C++那里提供释放的函数
C#用Dispose方法封装

参考Windows API的设计
你看有ReadFile就有CloseFile,有OpenConnection就有CloseConnection,有LoadLibrary就有FreeLibrary。你的dll本身要支持释放才行。


dll本身支持释放是啥意思?dll自己释放资源吗?求细解


dll里给个导出函数,可以释放内存,例如

void Release(void* p)
{
free(p);
}

------解决思路----------------------
同1楼
补充一点
你调用dll的地方封装到类里,类的实例不用了的时候,类自己调用释放的方法
而不是不同的地方都去调用dll,然后你就没法确定该如何释放了
------解决思路----------------------
释放任何需要释放的——内存、连接、文件句柄、关闭端口等等
------解决思路----------------------
资源谁申请,谁释放。通常,c++的dll会给你释放它申请并返回的资源的方法,如果非托管资源是你在C#里申请的,那一样的途径释放掉就好。