문제

purify purify 예를 들어.

struct something {
    int field1;
    char field2;
};

/* ... */

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

smth2 = smth;
.

마지막 줄은 초기화 된 메모리의 3 바이트에 액세스 할 때 UMR 경고를 매우 유발할 가능성이 높습니다.이것은 분명히 거짓 긍정적입니다. 지난 3 바이트의 구조체에는 사용자 데이터가 없습니다.

종종 경고는 매우 빠르게 로그 파일을 매우 빨리 채우고, 다른 실제 문제를 만나기가 매우 어렵습니다.

아무도 잘못된 긍정을 억압 할 수있는 방법을 알고 있습니까?

도움이 되었습니까?

해결책

정화에 대한 경험이 없지만 첫 번째 구조체를 명시 적으로 초기화하는 것은이 경고를 제거합니다.

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

구조체가 차단 범위 (파일이 아님)가있는 경우 가정합니다.파일 범위가있는 경우 제로 초기화는 암시 적입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top