C++/CLI思辨录之传递托管堆地址
下面代码展示了别针型指针的应用。
#pragma unmanaged //本机函数,以整型指针作参数,执行计算 void calc(int* val) { //执行计算操作 } #pragma managed //托管函数调用本机calc函数 int managedfunc() { int i=gcnew int(10); //把i的地址设置为别针型,以阻止对i的移动 pin_ptr<int> ppi=&i; int* np=ppi; calc(np);//用别针型int的地址调用本机函数 //把别针型指针的值置为nullptr,脱离了gc的限制 ppi=nullptr; //完成剩下的工作 return i; } |
基于轮廓的优化(Profile Guided Optimization)
在新版本的托管C++中有一项新增功能称为基于轮廓的优化。这一新的编译特点能够实现在编译时刻把探针注入到代码中。最后的exe文件与一个数据库一起打包发送,由该库记录下注入代码中的探针监测到的结果数据。当用户运行该程序时,这些探针记录下应用程序的使用。当你下一次再编译时,编译器作出智能性决策,如根据探针的记录作为相应的动作。这一特性带来了真实世界的优化。
为什么没有为使用托管类型而定义头文件?
在传统的C++中,一个头文件一般包含对象的接口,或者类与函数的声明,等等。这允许在多个翻译单元上实现某种类型的一致性声明。对于一个用托管代码编 写的且其被编译成MSIL的对象,需要在配件集中包含描述对象的元数据。因而,托管C++编译器不是通过头文件,而是通过使用配件集元数据来实现接口的读 取。这就是为什么你不必因使用托管类型而包含头文件。事实上,你可以通过使用#using指令来让编译器从配件集中读取元数据。
C++/CLI思辨录之传递托管堆地址相关推荐
- C++/CLI思辨录之Object的对象布局
C++/CLI相对纯C++来说,支持创建托管引用对象,托管对象由虚拟机来分配内存和管理,程序员可以不再担心内存泄漏的问题.其实,说白了也就是相当于自己创建一个内存池,并且虚拟机实际上也是这样做的. 在 ...
- C++/CLI思辨录之内部指针的两面性
在本文中,我将解释为什么使用本地指针来管理对象.原因在于对象是以垃圾收集器移动的.所以,当对象移动时,本地指针就变成无效的.所以,如果你想取得一个托管对象的本地指针,你就会遇到一个编译错.下面的代码显 ...
- C++/CLI思辨录之代理构造函数
现在我们讨论一下新的C++/CLI环境下的一个很酷的特性,称作代理构造函数. 对一个类来说,有多个构造函数是经常的事:并且这多个构造函数有一段共同的代码也很经常.一般地,在这种情况下,我们都是为该共同 ...
- C++/CLI思辨录之再谈继承
在面向对象编程领域一个关键的概念是继承. 在OO和C++中,类成员共有三种级别的继承:public,protected和private.对于基类成员的存取操作应该依赖于下面两个因素: ·派生类声明其类 ...
- 栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]
一.栈和托管堆 通用类型系统(CTS)区分两种基本类型:值类型和引用类型.它们之间的根本区别在于它们在内存中的存储方式..NET使用两种不同的物理内存块来存储数据-栈和托管堆.如下图所示: 值 ...
- new,is和as运算符解析及运行时类型,对象,线程堆栈,托管堆之间的联系
CLR要求对象必须使用new运算符创建,在使用new运算符创建一个对象时具体都做了些什么呢? 1.计算所有定义的实例字段,所有的基类型包括System.Object需要分配的字节数. 每一个堆上的对象 ...
- 【CLR】解析CLR的托管堆和垃圾回收
目录结构: contents structure [+] 为什么使用托管堆 从托管堆中分配资源 托管堆中的垃圾回收 垃圾回收算法 代 垃圾回收模式 垃圾回收触发条件 强制垃圾回收 监视内存 对包装了本 ...
- Unity 内存优化之理解托管堆和本机堆
https://docs.unity3d.com/Manual/BestPracticeUnderstandingPerformanceInUnity4-1.html https://www.dazh ...
- 【转】堆栈和托管堆 c#
原文地址:http://blog.csdn.net/baoxuetianxia/archive/2008/11/04/3218913.aspx 首先堆栈和堆(托管堆)都在进程的虚拟内存中.(在32位处 ...
最新文章
- LiveVideoStack线上分享第三季(二):对话机器人与儿童电子消费品
- php数组无限文类,php把无限级分类生成数组的类
- ElasticSearch学习(一):Linux环境准备
- 技术分享|Javascript高级教程学习指南
- java 元胞自动机_元胞自动机 Java实现
- Java 将Word转为OFD
- [境内法规]中国人民银行关于防范利用假美元洗钱的通知—银发[2006]第60号
- 《微观经济学》第五章弹性及其应用
- Rmarkdown教程
- arcos的matlab定义,想用matlab解一个带arccos的方程。可是结果好像没有解析解。求帮助解数值解...
- Java中多个pdf文件合并为一个
- OpenGL:gl_ClipDistance和gl_CullDiatance
- 输入一个大于3的整数n,判定它是否为素数。例题5.9
- fbx sdk android,FBX SDK环境配置
- 让你的搜索变得精致——启发式搜索
- HTML 文本域textarea
- 简报悦读:教育部取消5类高考加分项目,猿辅导纪录片讲述十年坚守
- 英语对我们意味着什么?
- java四个数打擂,荐 C/C++/Java/Go/Rust,Python喊你来打擂:3秒钟内统计出小于1亿的素数个数...
- 中本聪论文_浏览器中本机智能卡支持的案例