Lire la mémoire d'uninit de purify (UMR) sur le rembourrage de la classe / de la structure

StackOverflow https://stackoverflow.com/questions/3298133

  •  18-09-2020
  •  | 
  •  

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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top