Cyclone是否对胖指针执行静态或动态检查?

时间:2012-11-26 03:10:14

标签: c static-analysis bounds-checker

我正在通过Cyclone: A Safe Dialect of C为PL课程工作。该论文的作者解释说,他们添加了一个特殊的“胖”指针,用于存储边界信息以防止缓冲区溢出。但是它们没有指定对此指针的检查是静态的还是动态的。他们提供的示例似乎暗示程序员必须记住检查数组的大小,以检查它们是否超过缓冲区。这似乎打开了编程错误的可能性,就像在C中一样。我认为Cyclone的整个想法是让这样的错误变得不可能。语言有检查吗?是否只是让编程错误变得更难?

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;
}

1 个答案:

答案 0 :(得分:1)

  

“Fat”指针支持带有运行时限制的指针算法   检查。

通过谷歌搜索“胖指针”从Wikipedia获得。