GCC не может заглянуть в уже скомпилированный код функций strptime
, mktime
и ctime
во время компиляции.Вы просто передаете адрес структуры из точки вызова, ничего не читая.Valgrind, с другой стороны, выполняет вашу программу и отслеживает всю память и проверит, есть ли чтение перед записью определенного блока памяти, и, таким образом, может сообщить вам.
Если эти функции будут определены встроенными взаголовок, у вас может быть шанс, что компилятор может встроить их и отследить адрес указателя обратно до неинициализированной структуры.Тем не менее, я не проверял, насколько хорош GCC (или вообще, компиляторы).