Анонсирован выпуск компилятора Clang, разрабатываемого в рамках проекта LLVM, отличающийся добавлением поддержки технологии SAFECode, позволяющей автоматизировать выявление ошибок, связанных с некорректной работой с памятью. Поддержка SAFECode включается через указание специальной опции и никак не влияет на поведение компилятора, когда данная опция не активна, т.е. представленный выпуск может быть использован в роли полной замены классической сборке clang/clang++. Для загрузки доступны как исходные тексты, так и готовые сборки для Linux и Mac OS X. В отличие от инструментов подобных Valgrind, Clang с поддержкой SAFECode обладает следующими преимуществами:
- Он быстрее, так как не использует динамической трансляции исполняемого файла и может оптимизировать некоторые runtime-проверки;
- Он более точен, так как знает расположение границ отдельного стека и глобальных объектов (для поиска данных границ Valgrind использует эвристические методы);
- Он обеспечивает более полную диагностику ошибок, выдавая больше полезной информации о каждой выявленной проблемы.
- Выявление некорректного доступа к памяти (указатели, указывающие на несуществующий или удаленный объект);
- Определение неправильных вызовов функции free(), например, двойное освобождение выделенной памяти;
- Определение использования неинициализированных указателей;
- Выявление ошибок при работе с памятью, вызванных неправильным использованием функций стандартной библиотеки;
- Дополнительные оптимизации, включая удаление проверок корректности типов на этапе загрузки/сохранения и вынос за пределы циклов.
Источник: http://www.opennet.ru/opennews/art.shtml?num=31533
оригинал на opennet.ru