C/C++ 更加安全的库 Checked C

MIT
C/C++ 查看源码»
跨平台
微软
2016-06-23
开源中国股瞎

微软开源了Checked C,旨在对C和C++增加边界检查的研究项目。

Checked C允许程序员在C/C++中编写“确保边界检查”的代码。为了实现这个功能Checked C增加了新的指针和数组类型,它们可以在编译期和运行时进行边界检查:

  • ptr<T>:指向类型T且无须边界检查的指针。这种类型的指针不允许参与算数运算。当访问内存时,该类型指针不能为null。大部分指针应该用此类型。

  • array_ptr<T>:指向包含类型T数组的指针。该指针可以进行算数运算。当读写内存时它不能为null。程序员需要检查这类指针的边界。

  • span<T>:包含边界信息的指针。塔支持算数运算。当进行内存读写的时候不能为null。

  • T array_var checked[100]:声明类型为T、大小为100的数组并且包含边界检查。当进行C语言类型转换时,包含边界检查的数组将被转换成array_ptr类型。

该规范确定了变量操作行为,包括指针类型的间接寻址、数组引用、赋值、指针加法、比较、取址(&)、含边界检查数组类型和指针类型的转换等。

现存的C程序可以继续工作,很明显C*仍然未检查,且指针的算数运算会破坏当前代码。但是编译器可以通过增加参数在指针非正常使用时发出警告或者错误。

Checked C 包含规范、一个clang的实现和一个LLVM的实现。

介绍摘自:http://www.infoq.com/cn/news/2016/06/checked-c

的码云指数为
超过 的项目
加载中

评论(4)

wisdomCX
wisdomCX
我想说,win 不会再升级了....
BaiYang
BaiYang
一个clang的实现和一个LLVM的实现? 两者有何区别? #Checked C#
回去干活
回去干活
微软越来越受开发者喜欢了 #Checked C#
Force武装卫队
Force武装卫队
编译成功就是没有尝试了 #Checked C#

暂无资讯

暂无问答

jquery的checked以及disabled

下面只提到checked,其实disabled在jquery里的用法和checked是一模一样的 下边两种写法没有任何区别 只是少了些代码而已... ----------------------------------------------------------- <...

2014/05/20 15:22
15
0
点击tr中的全选使tr中的所有checkbox全选上

页面的代码如下: <table cellpadding="0" cellspacing="0" id="viewTable" class="tablesorter"> <thead> <tr> <th width="10%"><fmt:message key="projectmember.department.title"/></th>...

2013/01/04 18:09
65
0
JSTL的c:forEach标签(${status.index})

<c:forEach>标签具有以下一些属性: var:迭代参数的名称。在迭代体中可以使用的变量的名称,用来表示每一个迭代变量。类型为String。 items:要进行迭代的集合。对于它所支持的类型将在下面...

2016/12/16 09:26
76
0
php 怎么输出复选框呢?

<?php $a='1,2,6'; $ar=explode(',',$a); $i=0; ?> <input type="checkbox" name="tip[]" value="a" <?php if(in_array(++$i,$ar))echo 'checked'; ?> /> <input type="checkbox" name="tip[...

2013/08/14 16:41
32
0
jdbc,数据库案例:客户信息管理系统:jsp部分,数据库数据封装类,dao接口和实现

jsp部分: 默认主页: index.jsp: <body> <jsp:forward page="/servlet/Controller"> <jsp:param value="showAllCustomers" name="op"/> </jsp:forward> </body> 显示客户信息: listCustom...

2014/06/29 21:50
108
0
JSP 页面 checkbox 实现单选、多选效果

核心代码: roleList:request.setAttribute("roleList", roleList);(java代码) 主要是修改 type 类型: 单选:type="radio" 多选:type="checkbox" -------------------------------------...

2016/03/07 16:08
149
1
spring 3.2 mvc 点击修改按钮时<form:checkbox/>使原来选中的前面画勾

jsp页面的代码如下所示: <td class="label" valign="top"> <fmt:message key="authority.cname.title"/>: </td> <c:forEach items="${authoritys}" var="current" varStatus="i"> <td> <fo...

2012/12/17 16:17
1K
0
amazeUI 复择框问题解决

这是官方github参考文档,各种水坑,不好用,这让我想到了当时用 layUI 的1.0版本遇到的各种问题。 上菜: <div class="am-u-sm-9"> <div class="checkbox-group" id="g_0"> <div class="am...

2018/04/12 18:16
29
0
表单类型

Input表示Form表单中的一种输入对象,其又随Type类型的不同而分文本输入框,密码输入框,单选/复选框,提交/重置按钮等,下面一一介绍。 1,type=text 输入类型是text,这是我们见的最多也是...

2014/04/15 21:04
141
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部