2

私はCyclone: PLクラスのCの安全な方言を通り抜けています。この論文の著者は、バッファオーバーフローを防ぐために境界情報を格納する特別な「fat」ポインタを追加したと説明しています。ただし、このポインタのチェックが静的であるか動的であるかは指定されていません。彼らが与える例は、プログラマーがそれらがバッファーを超えていないことを確認するために配列のサイズを確認することを忘れないようにしなければならないことを暗示しているようです。これは、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;
}
4

1 に答える 1

1

「ファット」ポインタは、実行時の境界チェックによるポインタ演算をサポートします。

「ファットポインター」をグーグルで検索してウィキペディアから取得。

于 2012-11-27T03:09:28.000 に答える