Checked CC/C++ 更加安全的库
微软开源了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的实现。
评论
SqratSquirrel 的 C++ 库
Sqrat是一个Squirrel的 C++库,用来处理和解析Squirrel脚本,类似SqPlus,包括函数和语法。
SqratSquirrel 的 C++ 库
0
PHP-XZendAPI 的 C++ 封装库
PHPZendAPI的C++封装库,可以用于快速开发PHP扩展。PHP-X使用了完全面向对象的设计,使得PHP扩展开发、C++嵌入PHP变得非常简单,实现了C++和PHP的互通。环境依赖:PHP-7.
PHP-XZendAPI 的 C++ 封装库
0
OGLplusOpenGL的C++封装库
OGLplus(oglplus)是一个仅包含头文件的C++语言库,用于实现一个瘦面向对象的OpenGL门面操作接口,提供了自动资源和对象管理的封装,让在C++中使用OpenGL更加简单和安全。示例代码
OGLplusOpenGL的C++封装库
0
SSL++OpenSSL 的 C++ 封装库
SSL++是OpenSSL的C++封装库。你可以通过SSL++提供简单的类来使用OpenSSLAPI,目前该项目还没有完全封装OpenSSL所有API,但已经可以满足绝大多数应用要求。
SSL++OpenSSL 的 C++ 封装库
0
DrumstickALSA的C++封装库
Drumstick是一个ALSA的音序器(MIDI接口)的C++封装库示例代码:#include<QApplication>#include<drumstick.h>intma
DrumstickALSA的C++封装库
0