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

Ответ: никак

Способ номер 1.

Писать как обычно, используя статические анализаторы (Java VM based, CMake/Clang LLVM based), и анализаторы утечек памяти, типа valgrind, или sanitizers для обнаружения утечек памяти, плюс какое-то количество ручного кода для тестирования

Способ номер 2.

Попробовать написать обёртку над операциям работы с памятью напрямую, предоставить API с безопасными операциями, и запретить пользователям обращаться к памяти через указатели.

Второй способ подразумевает, что у вас где-то должно происходить преобразование безопасных типов данных , заменяющих небезопасные при операциях, выполняемых через ваш API.

Тут тоже требуется определенный подход и аккуратность при проверке входящих/исходящих параметров вызово функций. И это всё, что имеется по умолчанию.

6 комментариев