Niezainicjalizowany member unii - narzędzia do weryfikacji

0

Zastanawiam się, czy istnieje jakiś tool do analizy kodu który umożliwia sprawdzenie czy dany member unii został zainicjalizowany ? Albo czy gdzieś nie ma próby dostępu niezainicjalizowanego obszaru pamięci wewnątrz obecnie aktywnego membera unii(który np. jest strukturą) ? Valgrind czy clang-analyzer nie radzą sobie z tym. Słyszałem jeszcze o zestawie tooli Frama-C ale nie mam z tym żadnych doświadczeń.

4

Potrzebujesz unii? W takim razie w C++17 używaj std::variant, który obsługuję unię w bezpieczny sposób.
A z narzędzi to polecam używać "Address sanitizer" dostępny w Clang i Gcc, który potrafi wykryć takie błędy.

clang-analyzer to jest narzędzie statycznej analizy kodu.
Natomiast Valgrind sprawdza kod w runtime (ergo porównujesz dwie różne rzeczy). Clang ma zestaw "Sanitizer'ów", które skutecznie zastępują funkcje Valgrind. W połączaniu z Xcode to są bardzo poręczne.

1 użytkowników online, w tym zalogowanych: 0, gości: 1