C#调用C++的DLL时,使用非托管和托管的区别?
发布网友
发布时间:2022-05-07 11:00
我来回答
共1个回答
热心网友
时间:2023-10-27 17:40
所谓托管代码,那就是由运行时自动处理内存的,如C#写的(非安全性的除外)都是托管代码。有垃圾回收机制来对内存进行管理。
你调用C++的,那这个一定是非托管代码,.net运行时无法对PINVOKE的代码进行内存管理。需要你自己对内存进行回收。
C++的dll还要调用其他dll时,这个也是非托管的。追问就是看网上c#调用c++写的dll时,可以利用CLR封装一下,生成一个托管c++ dll。这种方法可用吗?
热心网友
时间:2023-10-27 17:40
所谓托管代码,那就是由运行时自动处理内存的,如C#写的(非安全性的除外)都是托管代码。有垃圾回收机制来对内存进行管理。
你调用C++的,那这个一定是非托管代码,.net运行时无法对PINVOKE的代码进行内存管理。需要你自己对内存进行回收。
C++的dll还要调用其他dll时,这个也是非托管的。追问就是看网上c#调用c++写的dll时,可以利用CLR封装一下,生成一个托管c++ dll。这种方法可用吗?