Purificare la memoria di Uninit Leggi (UMR) su imbottitura della classe / struttura

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

  •  18-09-2020
  •  | 
  •  

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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top