当使用pinvoke从c#代码调用时,非托管c++dll何时从内存卸载
when does unmanaged c++ dll unload from memory when called from C# code using pinvoke
我在C++中有Sample.dll,就像这样,
extern "C" __declspec(dllexport) int func()
{
return 100;
}
我从C#调用这个
[DllImport("SampleCPP.dll")]
public static extern int func();
我想知道当这个C#应用程序调用函数func()时,Sample.dll什么时候会从内存中卸载;?
第一次调用非托管DLL中的函数时(从C#或其他非托管代码),非托管DLL将加载到进程中,并且在加载它的AppDomain被销毁之前不会卸载。在一个典型的程序中,您只有一个AppDomain,因此当进程终止时,它将被卸载。
相关文章:
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- C++ DLL 堆内存分配问题
- 读取进程内存多级指针(DLL 注入)
- 从C/C++(Win64)中的内存加载64位DLL
- 从 JNI 调用的 DLL 从哪里获取其内存以进行分配,例如 Malloc
- 本机 dll 中的动态内存分配
- 放置在外部 DLL 中的类中的字符串数据的内存损坏
- 在特定 Windows DLL 模块中分配内存
- 延迟加载的 DLL 在内存中彼此相距太远
- 内存损坏从vb.net调用c dll
- 从 /MD Exe 文件中删除 /MDd 的 DLL 内存会导致堆损坏
- AccessViolationException从C++/CLI DLL读取C++应用程序中分配的内存
- 发生 JNI 调用 c++ dll "不满意链接错误: 对内存位置的无效访问"
- 在DLL中分配内存并将其指针提供给客户端应用程序,这是不是一种糟糕的做法
- 尝试读取或写入受保护的内存.这通常表示其他内存已损坏.在C++Dll中
- C#调用C++dll试图读取或写入受保护的内存
- DLL内存损坏
- c++ DLL内存读取崩溃
- 本机C++dll/C#内存问题