Сопоставьте длину массива с условием завершения цикла
Зачем
Зачем это нужно
Уточните, кто выделяет буфер и кто обязан его освободить
Получите граничные случаи для строки, массива и пустого входа
Вопросы
Частые вопросы
Как попросить найти выход за границы в Си?
Разбери C: int a[3]={1,2,3}; int sum=0; for(int i=0;i<=3;i++){sum+=a[i];} Объясни выход за границу, исправь условие и покажи функцию суммы с указателем и длиной. Задай договор для длины 0 и NULL, добавь тесты для {1,2,3} и пустого набора. Не выполняй код.
Что прислать при сегфолте на C?
Вставьте падающую функцию, её вызов, версии компилятора и параметры сборки. Если есть, добавьте текстовый стек отладчика и сообщение санитайзера. Удалите секреты и содержимое реальных пользовательских буферов. Меняйте одну причину за раз.
Какие результаты ожидаются у функции суммы?
На локальном примере {1,2,3} ожидается 6, при длине 0 — результат согласно выбранному договору, например 0 без чтения памяти. Отдельно проверьте недопустимый NULL при положительной длине; поведение должно быть определено заранее.
Почему отсутствие сегфолта не означает исправление?
Обращение за границу массива приводит к неопределённому поведению и не обязано завершать процесс. Сопоставляйте код с границами данных, включайте предупреждения и применимые санитайзеры. Для суммы также учитывайте допустимый диапазон целых чисел.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.