Maison > développement back-end > C++ > le corps du texte

Pourquoi Valgrind signale-t-il « Le saut ou le déplacement conditionnel dépend de valeurs non initialisées » et comment puis-je suivre son origine ?

Patricia Arquette
Libérer: 2024-11-01 10:27:30
original
905 Les gens l'ont consulté

Why Does Valgrind Report

Identification du "saut ou déplacement conditionnel dépend de valeurs non initialisées" Message de Valgrind

L'énigmatique "saut ou déplacement conditionnel de Valgrind dépend de valeurs non initialisées valeur(s)" peut être un casse-tête déroutant. Bien qu'il identifie le point où une valeur non initialisée est utilisée, il ne parvient pas à révéler son origine.

Pour résoudre ce problème, vous pouvez utiliser l'option valgrind --track-origins=yes. Cela permet à Valgrind de retracer la genèse des valeurs non initialisées, mais cela se fait au prix d'une utilisation accrue de la mémoire et du temps d'exécution.

Comprendre le comportement de reporting

Il est crucial de noter que Valgrind ne signale pas les valeurs non initialisées immédiatement lors de leur première utilisation. Au lieu de cela, il attend que les données soient utilisées d'une manière susceptible d'affecter le comportement observable du programme. Ceci est expliqué dans le manuel de Valgrind :

Il est important de comprendre que votre programme peut copier autant de données indésirables (non initialisées) qu'il le souhaite. Memcheck l'observe et garde une trace des données, mais ne se plaint pas. Une plainte n'est émise que lorsque votre programme tente d'utiliser des données non initialisées d'une manière susceptible d'affecter le comportement visible de l'extérieur de votre programme.

Informations supplémentaires de Valgrind

La FAQ Valgrind clarifie davantage :

En ce qui concerne le rapport rapide de copies de valeurs de mémoire non initialisées, cela a été suggéré à plusieurs reprises. Malheureusement, presque tous les programmes copient légitimement les valeurs de mémoire non initialisées (car les compilateurs complètent les structures pour préserver l'alignement) et une vérification hâtive conduit à des centaines de faux positifs. Par conséquent, Memcheck ne prend pas en charge la vérification hâtive pour le moment.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!