클래스/구조체 패딩의 매우 귀찮은 부작용이 Purify으로 발생했습니다. 예 :클래스/구조체 패딩에 대한 Purify의 Uninit Memory Read (UMR)
struct something {
int field1;
char field2;
};
/* ... */
struct something smth, smth2;
smth.field1 = 1;
smth.field2 = 'A';
smth2 = smth;
마지막 행은 3 바이트의 초기화 된 메모리가 액세스된다는 UMR 경고를 트리거 할 가능성이 높습니다. 이것은 분명히 거짓 긍정입니다. 구조체의 마지막 3 바이트에는 사용자 데이터가 없습니다. 단지 패딩입니다.
종종 경고는 매우 빠르게 로그 파일을 채워서 다른 실제 문제를 보는 것을 어렵게 만듭니다.
누구나 오 탐지를 억제하는 방법을 알고 있습니까?
C++의 경우 실제로 다른 가능한 솔루션을 찾았습니다. 심지어 구조체가 기본 및 복사본 c'tors를 구현합니다. 복사 생성자 구현은 분명히 실제 필드 만 복사하고 절대 패딩을 건드리지 않지만 복사 생성자는 구조 할당의 컴파일러 최적화를 방해하는 것 같습니다. – Dummy00001