Purificare la memoria di Uninit Leggi (UMR) su imbottitura della classe / struttura
Domanda
Espropre l'effetto collaterale abbastanza fastidioso dell'imbottitura della classe / struttura con purifica .Ad esempio.
struct something {
int field1;
char field2;
};
/* ... */
struct something smth, smth2;
smth.field1 = 1;
smth.field2 = 'A';
smth2 = smth;
.
L'ultima riga sarebbe molto probabile che si acceda a Trigger UMR che dice che sono accessibili 3 byte di memoria inizializzata.Questo è ovviamente un falso positivo: non ci sono dati dell'utente negli ultimi tre byte della struttura, è solo un imbottitura.
Spesso gli avvertimenti si riempirono molto rapidamente i file di registro rendono molto difficile vedere gli altri, problemi reali.
Qualcuno conosce qualche modo per sopprimere i falsi positivi?
Soluzione
Non ho esperienza con purificare, ma forse inizialmente inizializzando esplicitamente la prima struttura rimuove questo avviso:
struct something smth = {0};
struct something smth2;
.
Suppongo che i tuoi rigorti abbiano il blocco ambito (non file).Se hanno una scoperta di file, l'inizializzazione zero è implicita.