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

码农软件 · 软件分类 · 语法解析工具 · 2019-12-12 11:43:55

软件介绍

微软开源了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

本文地址:https://codercto.com/soft/d/20979.html

Design for Hackers

Design for Hackers

David Kadavy / Wiley / 2011-10-18 / USD 39.99

Discover the techniques behind beautiful design?by deconstructing designs to understand them The term ?hacker? has been redefined to consist of anyone who has an insatiable curiosity as to how thin......一起来看看 《Design for Hackers》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器