cyclone是否对fat指针执行静态或动态检查?
我正在为一门PL课程努力学习。论文作者解释说,他们添加了一个特殊的“fat”指针,用于存储边界信息,以防止缓冲区溢出。但是它们没有指定对这个指针的检查是静态的还是动态的。他们给出的示例似乎暗示程序员必须记住检查数组的大小,以检查它们是否超过缓冲区。这似乎打开了编程错误的可能性,就像在C中一样。我认为Cyclone的整个想法是让这些错误变得不可能。语言有支票吗?这会不会让编程错误变得更难cyclone是否对fat指针执行静态或动态检查?,c,static-analysis,bounds-checker,C,Static Analysis,Bounds Checker,我正在为一门PL课程努力学习。论文作者解释说,他们添加了一个特殊的“fat”指针,用于存储边界信息,以防止缓冲区溢出。但是它们没有指定对这个指针的检查是静态的还是动态的。他们给出的示例似乎暗示程序员必须记住检查数组的大小,以检查它们是否超过缓冲区。这似乎打开了编程错误的可能性,就像在C中一样。我认为Cyclone的整个想法是让这些错误变得不可能。语言有支票吗?这会不会让编程错误变得更难 int strlen(const char ?s) { int i, n; if (!s) r
int strlen(const char ?s) {
int i, n;
if (!s) return 0;
n = s.size; //what if the programmer forgets to do this.. or accidentally adds an n++;
for (i = 0; i < n; i++,s++)
if (!*s) return i;
return n;
}
int strlen(常量字符){
inti,n;
如果(!s)返回0;
n=s.size;//如果程序员忘了这么做..或者不小心添加了一个n++;
对于(i=0;i
“Fat”指针支持具有运行时边界的指针算法
检查
通过谷歌搜索“胖指针”获得的信息。很难静态地对C进行推理(Pascal Cuoq回答了您的问题,他构建的静态分析工具与大多数工具相比表现非常出色)。对于那些静态分析工具无法检查的事情,您唯一的希望是在程序可能出错的时刻进行运行时检查。这是另一篇关于动态分析的论文,我认为它比旋风更深入。本文使用了几个部分表示的“胖”指针,这样就不会因为大小错误而破坏C数据结构。