Код: Выделить всё
size_t ft_strlen(const char *s);
Однако я заметил нечто неожиданное:
Вызов strlen(NULL) вызывает ошибку времени компиляции:
нуль передается вызываемому объекту, которому требуется ненулевой аргумент [-Wnonnull]
Вызов ft_strlen(NULL) компилируется нормально, но завершается сбоем во время выполнения из-за
ошибки сегментации
Учитывая, что обе функции имеют одинаковую сигнатуру, передаются одни и те же входные данные и обе скомпилированы с cc, почему strlen(NULL) завершается неудачей компилировать, а ft_strlen(NULL) — нет?
Я пытаюсь понять поведение на уровне компилятора и то, чем стандартные библиотечные функции отличаются от пользовательских, и как я могу потенциально воспроизвести strlen() самостоятельно.
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/797 ... strlennull
Мобильная версия