Checked C 使用

2.1 受检指针类型

受检指针类型包括:

其中arrntarr指针均关联一个边界(bounds),用于定义指针引用的内存范围。以下是三种边界声明方式及其对应的内存区域(右侧方括号表示左闭右开区间):

ntarr指针的边界语义类似,但其内存区域可向右扩展直至遇到NULL终止符(即NULL不在边界范围内)。

边界表达式(如上述count(n)中的n)可引用作用域内的变量;结构体成员在边界表达式中可引用相邻字段。为保证健全性(soundness),边界表达式中使用的变量既不可被修改,也不可获取其地址,因此某些传统编程模式可能不受支持(参见第3.1节的完整示例)。

Checked C还支持函数和结构体的多态(泛型)类型。例如,以下代码定义了一个返回T类型对象数组的泛型分配函数:

for_any(T) array_ptr alloc(unsigned int s) : byte_count(s);

Checked C 方法论创新