Безопасный C++: компиляторный плагин для контроля памяти

Использование пользовательских атрибутов в C++20 позволяет создавать правила безопасного управления памятью без нарушения обратной совместимости. Предлагается подход, использующий атрибуты для маркировки классов, управляющих памятью (VarShared, VarValue, VarGuard, VarWeak, VarAuto), и плагин компилятора для анализа их использования.
Безопасный C++: компиляторный плагин для контроля памяти
Изображение носит иллюстративный характер

Плагин, разработанный для Clang, анализирует код на предмет соответствия правилам безопасного использования этих классов. В частности, он проверяет, как передаются объекты, созданные с использованием shared_ptr и weak_ptr. Этот метод накладывает ограничения на копирование и обмен переменными, чтобы предотвратить утечки памяти и dangling pointers, имитируя механизмы владения и заимствования, как в языке Rust.

Ключевым элементом системы является использование атрибутов memsafe для маркировки пространств имен и классов. Это позволяет включать и отключать проверку безопасности на уровне отдельных блоков кода. Области имен, помеченные как "unsafe", исключаются из проверок, что позволяет гибко работать с низкоуровневым кодом, где требуется прямой контроль памяти.

Применяя подобный подход, можно выявлять ошибки, связанные с некорректным использованием указателей в C++, не меняя при этом существующий код и стандарты языка. Плагин для компилятора добавляет метки ошибок в исходный код, что облегчает их обнаружение и исправление, повышая тем самым общую надежность программного обеспечения.


Новое на сайте

19164Уязвимые обучающие приложения открывают доступ к облакам Fortune 500 для криптомайнинга 19163Почему ботнет SSHStalker успешно атакует Linux уязвимостями десятилетней давности? 19162Microsoft устранила шесть уязвимостей нулевого дня и анонсировала радикальные изменения в... 19161Эскалация цифровой угрозы: как IT-специалисты КНДР используют реальные личности для... 19160Скрытые потребности клиентов и преимущество наблюдения над опросами 19159Академическое фиаско Дороти Паркер в Лос-Анджелесе 19158Китайский шпионский фреймворк DKnife захватывает роутеры с 2019 года 19157Каким образом корейские детские хоры 1950-х годов превратили геополитику в музыку и... 19156Научная революция цвета в женской моде викторианской эпохи 19155Как новый сканер Microsoft обнаруживает «спящих агентов» в открытых моделях ИИ? 19154Как новая кампания DEADVAX использует файлы VHD для скрытой доставки трояна AsyncRAT? 19153Как новые китайские киберкампании взламывают госструктуры Юго-Восточной Азии? 19152Культ священного манго и закат эпохи хунвейбинов в маоистском Китае 19151Готовы ли вы к эре коэффициента адаптивности, когда IQ и EQ больше не гарантируют успех? 19150Иранская группировка RedKitten применяет сгенерированный нейросетями код для кибершпионажа
Ссылка