3
Впервые (в моей новой среде для разработчиков) я вижу, что valgrind жалуется на mktime, но я не уверен, что это ошибка в библиотеке libc, valgrind или моем коде. Я начну с ошибки (ниже) - достаточно ли информации, чтобы объяснить причину?valgrind жалуется на __mktime - это моя вина?
==3682== at 0x38ACE9A505: __mktime_internal (in /lib64/libc-2.12.so)
==3682== by 0x4D66F7: ???
==3682== by 0x4D7611: ???
==3682== by 0x4D23CD: ???
==3682== by 0x4D175B: ???
==3682== by 0x38ACE1ECDC: (below main) (in /lib64/libc-2.12.so)
==3682== Uninitialised value was created by a stack allocation
==3682== at 0x4D64BE: ???
==3682==
==3682== Conditional jump or move depends on uninitialised value(s)
==3682== at 0x38ACE9A505: __mktime_internal (in /lib64/libc-2.12.so)
==3682== by 0x4D67DA: ???
==3682== by 0x4D7611: ???
==3682== by 0x4D23CD: ???
==3682== by 0x4D175B: ???
==3682== by 0x38ACE1ECDC: (below main) (in /lib64/libc-2.12.so)
==3682== Uninitialised value was created by a stack allocation
==3682== at 0x4D64BE: ???
Это очень распространенная ошибка. Если вы хотите, чтобы mktime определяло правильное значение tm_isdst, установите его равным -1 (как описано в man-странице mktime). –
Или - как предложено [здесь] (http://www.ex-parrot.com/~chris/random/initialise.html) - вместо 'memset'ting, инициализировать структуру с помощью нулей, используя' struct tm date = {0}; ' – freitass