Checked C C/C++ 更加安全的库开源项目

我要开发同款
匿名用户2016年06月23日
38阅读
开发技术C/C++
所属分类开发工具、语法解析工具
授权协议MIT

作品详情

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

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

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

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

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

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

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

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

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

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

查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论