Leitura de memória Uninit (UMR) do Purify no preenchimento de classe/estrutura

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

  •  18-09-2020
  •  | 
  •  

Pergunta

Sinto um efeito colateral bastante irritante do preenchimento de classe/estrutura com Purificar.Por exemplo.

struct something {
    int field1;
    char field2;
};

/* ... */

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

smth2 = smth;

A última linha provavelmente acionaria um aviso UMR informando que 3 bytes de memória inicializada foram acessados.Isto é obviamente um falso positivo:não há dados do usuário nos últimos três bytes da estrutura, é apenas um preenchimento.

Freqüentemente, os avisos preenchem rapidamente os arquivos de log, tornando muito difícil ver os outros problemas reais.

Alguém sabe alguma maneira de suprimir os falsos positivos?

Foi útil?

Solução

Não tenho experiência com purificação, mas talvez inicializar explicitamente a primeira estrutura remova este aviso:

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

Presumo que suas estruturas tenham escopo de bloco (não arquivo).Se eles tiverem escopo de arquivo, a inicialização zero estará implícita.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top