При сборке с -fsanitize = address я иногда вижу проблемы доступа к памяти из классов libc ++.
Ошибки не кажутся повторяемыми от запуска к запуску и иногда вообще не происходят.
Что происходит? Как я могу предотвратить это?
«Если контейнеры libc ++ переходят от инструментального (перестроенного с помощью ASan) к неинструментированному коду, Address Sanitizer может сообщить о ложных срабатываниях переполнения контейнера».
Если ваша программа связывается с библиотеками, созданными с помощью libc ++ без ASAN, вам нужно определить _LIBCXX_HAS_NO_ASAN
при строительстве.
Увидеть Почему XCode определяет _LIBCPP_HAS_NO_ASAN при создании очищенной по адресу сборки?
Других решений пока нет …