托管

C++11智能指针

萝らか妹 提交于 2020-02-07 04:17:56
C++11智能指针 为什么要使用智能指针: 智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域是,类会自动调用析构函数,析构函数会自动释放资源。所以智能指针的作用原理就是在函数结束时自动释放内存空间,不需要手动释放内存空间。 1.auto_ptr (c++98的方案,cpp11已经抛弃) 采用所有权模式 auto_ptr< string> p1 (new string ("I reigned lonely as a cloud.”)); auto_ptr<string> p2; p2 = p1; //auto_ptr不会报错. 此时不会报错,p2剥夺了p1的所有权,但是当程序运行时访问p1将会报错。所以auto_ptr的缺点是:存在潜在的内存崩溃问题! 2.unique_ptr(替换auto_ptr) unique_ptr实现独占式拥有或严格拥有概念, 保证同一时间内只有一个智能指针可以指向该对象 。它对于避免资源泄露(例如“以new创建对象后因为发生异常而忘记调用delete”)特别有用 采用所有权模式,还是上面那个例子 unique_ptr<string> p3 (new string ("auto")); //#4 unique_ptr

简单介绍托管执行和 CLI

痞子三分冷 提交于 2019-12-09 16:50:06
[doc] 处理器不能直接解释程序集。程序集用的是另一种语言,即公共中间语言(Common Intermediate Language,CIL),或称为中间语言(IL) 1 。 C# 编译器将 C# 源代码文件转换成中间语言。为了将 CIL 代码转换成处理器能理解的机器码,还要完成一个额外的步骤(通常在运行时进行)。该步骤涉及 C# 程序执行的一个重要元素:VES(Virtual Execution System,虚拟执行系统)。VES 也称为运行时(runtime)。 它根据需要编译 CIL 代码,这个过程称为即时编译或 JIT 编译(just-in-time compilation)。如代码在像“运行时”这样的一个“代理” 的上下文中执行,就称为托管代码(managed code),在“运行时”的控制下执行的过程则称为托管执行(managed execution)。 之所以 称为“托管”,是因为“运行时”管理着诸如内存分配、安全性和 JIT 编译等方面,从而控制了主要的程序行为。执行时不需要“运行时”的代码称为本机代码(native code)或非托管代码(unmanaged code)。 说明: “运行时”既可能指“程序执行的时候”,也可能指“虚拟执行系统”。为明确起见,用“执行时”表示“程序执行的时候”,用“运行时”表示负责管理 C# 程序执行的代理。 2 “运行时

Androidstudio项目分享到Git@OSC托管的两种方式

核能气质少年 提交于 2019-11-27 12:47:51
开源中国提供了Git服务,可以建立私有仓库,而且在速度上比国外的github要快很多。 AndroidStudio 分享项目到 git@osc 有两种情况, 1 已经有了一个正在开发的项目,现在我们要把他分享到git@osc上面去。 2 在git@osc上面新建一个项目,然后··· 一、首先下载git,并安装 http://git-scm.com/downloads/ 二、在studio的File - Settings 中指定Git命令的路径,如图: 在Path to Git executable 中选择git客户端的路径。 找到安装git bin目录下的git.exe 点击目录右边的"Test"按钮,如果弹出以下窗口表示配置成功: 方法一 适用于新建项目 先在Git@OSC上创建仓库 拿到Git@OSC仓库的HTTPS连接,例如https://git.oschina.net/yuechenglei/Memo.git 在studio工具栏中 VCS——Checkout from Version Control——Git 粘贴 URL 设置好目录位置 然后点击CLONE 会创建并且复制仓库文件到本地项目中 然后你就可以在本地项目中进行Git add commit等操作了 第一次提示输入开源中国账号和密码 验证通过之后,即可以把远程的git项目拷贝到本地。