Pregunta

Experimento un efecto secundario bastante molesto del acolchado de clase / estructura con Purify .E.g.

struct something {
    int field1;
    char field2;
};

/* ... */

struct something smth, smth2;
smth.field1 = 1;
smth.field2 = 'A';

smth2 = smth;

La última línea probablemente activará la advertencia de UMR diciendo que se acceden a 3 bytes de memoria inicializada.Esto es obviamente un falso positivo: no hay datos de usuario en los últimos tres bytes de la estructura, es solo un relleno.

A menudo, las advertencias llenan muy rápidamente los archivos de registro, lo que dificulta mucho ver los otros problemas reales.

¿Alguien sabe alguna forma de suprimir los falsos positivos?

¿Fue útil?

Solución

No tengo experiencia con Purifed, pero tal vez la inicialización explícitamente la primera estructura elimina esta advertencia:

struct something smth = {0};
struct something smth2;

Supongo que sus estructuras tienen el alcance de bloques (no el archivo).Si tienen alcance de archivo, la inicialización cero está implícita.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top