Что сообщает valgrind, так это то, что он видит скачок на основе чтения из местоположения, для которого он знает, что он был выделен программой, но для которого он не видел инициализацию. Это может произойти, если объект инициализируется некой магией, о которой не знает Вэлгринд. Архитектура постоянно развивается, и, возможно, у вас есть инструкция или тип регистра, о котором valgrind не знает достаточно.
Другим трудным источником таких неинициализаций являются union
с. Два источника:
- По умолчанию для них инициализируется только первый элемент и так
когда другое поле выходит за пределы этого первого члена, эта часть может быть
неинициализированный.
- Если члены
union
являются struct
, они могут иметь отступы
байты в разных местах, и поэтому часть члена может быть
неинициализирован, если вы назначены другому участнику.
В некоторых случаях может быть законным даже прочитать эти вещи (например, через unsigned char[]
), поэтому, если вы считаете такие вещи ошибкой (ложное срабатывание) или нет, это вопрос перспективы.