Niezainicjalizowany member unii - narzędzia do weryfikacji

Niezainicjalizowany member unii - narzędzia do weryfikacji
OG
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 71
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ń.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.