Lire la mémoire d'uninit de purify (UMR) sur le rembourrage de la classe / de la structure
Question
J'effectue un effet secondaire assez gênant du rembourrage de la classe / de la structure avec purify .E.g.
struct something {
int field1;
char field2;
};
/* ... */
struct something smth, smth2;
smth.field1 = 1;
smth.field2 = 'A';
smth2 = smth;
La dernière ligne ferait très probablement probablement une avertissement UMR indiquant que 3 octets de mémoire initialisée sont accessibles.Ceci est évidemment un faux positif: il n'y a pas de données utilisateur dans les trois derniers octets de la structure, c'est juste un rembourrage.
Souvent, les avertissements remplissent très rapidement des fichiers journaux rendant très difficile à voir les autres problèmes réels.
Quelqu'un peut-il savoir un moyen de supprimer les faux positifs?
La solution
Je n'ai aucune expérience avec purify, mais peut-être explicitement initialiser la première structure supprime cet avertissement:
struct something smth = {0};
struct something smth2;
Je suppose que vos structures ont une portée bloquante (pas de fichier).S'ils ont la portée du fichier, l'initialisation zéro est implicite.