Циклон выполняет статические или динамические проверки на указатели жира?

Я прохожу путь через Cyclone: ​​безопасный диалект 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 ответ

Решение

"Толстые" указатели поддерживают арифметику указателей с проверкой границ во время выполнения.

Получено из Википедии путем поиска в поисках "жирных указателей".

Другие вопросы по тегам