在看GC这一块时看到托管对象和非托管对象,请问托管对象和非托管对象都有哪些? 你好,简单的说,在dotNet端分配的内存都是托管的,但是需要注意Image,Font,Brush等对象,通常这些对象都很占内存,一个Image对象就可能上百兆,我们在使用这些对象的时候,建议手动回收。另外,如果不是dotNet分配的内存,就都该属于非托管的了,比如C++分配的内存。C++/CLI 托管指针与非托管指针之间的转换 不太确定你想干什么。如果你单纯想把一个托管指针传给一个本地函数,那么应该用pin_ptr固定住这个托管对象,然后把pin_ptr变量转换成void*交给本地函数。类似于ManagedType^obj=gcnew ManagedType;pin_ptr^>;pin=obj;固定住obj,不让它在内存中位置发生变化。注意这个只在pin变量的生存期内有效。void*pobj=pin;CFunction(pobj);但是这样也只能传递一下而已,因为托管对象的指针在本地代码里是不能用的。除了在本地代码里临时保存托管对象给别的托管代码使用以外没什么意义。ManagedType^obj2=*(ManagedType^)pobj;可以这样在转换回去。不过说老实话这么干各种危险。所有这些必须在pin的生存期内干。如果你希望在C函数中直接使用托管类的对象。你大可让C函数直接接受托管对象。归根结底我还是不知道你要干什么。c#中托管代码和非托管代码的区别! C#里都是托管,而且是他的专有名词,.NET中都是托管的环境非托管一般是C 或其他的语言写的,比如系统API的调用就是非托管[DLLImport(\"user32.dll\")]这个就是非托管。托管代码与非托管代码的区别 其实整个.NET项目都是运行在.NET Framework上的托管代码,这个道理和JAVA虚拟机的机制是类似的。最简单的说呢,受托管的代码不能直接写内存,是安全的,而非托管代码是非安全代码,可以使用指针操作内存。一般的项目使用托管代码都行了,也就是说在程序里面不需要用到非安全代码。对于一些对速度要求高的部分功能可以考虑使用非安全代码,使用指针等读写内存,而对于真个项目来说还是受托管的安全代码。有关非安全代码的信息请查阅MSDN unsafe。
随机阅读
- cpu散热:酷冷至尊海魔120一体水冷和高端风冷九州风神大霜塔,阿萨辛哪个好 至尊大霜塔与120水冷
- 样品和称量瓶一起恒重
- 游艇码头规划设计需要考虑什么因素? 水上浮桥要采用什么材料会比较好? 水上浮桥怎么通车
- 请介绍一下日本男士和服的种类? 花野真衣绿衣服牛仔裤
- 现在是十月谁问你十一月了 请你们帮帮我
- 朝阳小红门到海定区永丰屯村永丰幼儿园 永丰屯村幼儿园
- 苹果醋何叶减肥片 如果减肥的荷叶压片,和苹果`醋
- 与幸福相关的一段话 用幸福写一段话
- 音响喇叭的小球瘪了怎么办? 调音台防尘罩
- 高观水产市场站街 国内有哪些独具特色的海岛(县)值得一去?
- 有个名词形容日常生活支出占总收入的比重的叫什么 住房支出占家庭收入的多少
- 灵溪紫罗兰商务宾馆 杭州有哪些好玩的地方?
- 南如皋港红星花苑 大神们,请问从浙江象山石浦客运中心站到山东省营口市货车的高速线路最近是怎么的?
- 系统分析师有没有用 系统分析师需要学那些的东西呀 我现在一点头绪也没有 希望大师们给我指指路
- 殷常青 岁月帖 中国近现代诗歌有哪些好作品?
- 沥青混合料毛体积密度与压实度有什么关系? 沥青混合料的毛体积密度
- 貂蝉是怎么死的? 冠位貂蝉
- 磐安镇的地区代码 毛家庄村委会电话号码
- 公园健身区域设置要求 公园运动区设计说明
- 奋斗的青春才有未来评论 怎样的青春才无悔、要怎样奋斗才有好的未来?