Короче говоря: Нет
C не выполняет никаких проверок во время выполнения, если вы не выполняете их вручную.
Вы можете использовать свои собственные функции, макросы и буферизацию дляЗащита от недопустимых доступов.Однако вам придется использовать этот интерфейс везде , что означает, что вы потеряете прямой доступ к этому буферу.
Вы также увидите влияние на производительность из-за дополнительных проверок условий.Возможно, вам удастся избежать этого, используя прямой доступ к ветвям кода, которые, как доказано, не вызывают выходов за границы.
РЕДАКТИРОВАТЬ:
Существует также довольно важный вопрос:msgstr "что должен делать код после обнаружения недопустимого доступа".Должна ли ваша программа вывести ошибку и выйти, как если бы она столкнулась с исключением на других языках?Должен ли он игнорировать ошибку?Должен ли он попытаться это исправить?
Способ решения этой проблемы на языке C состоит в том, чтобы проанализировать ситуацию и убедиться, что каждая ветвь / часть кода заранее безопасна, а не проверять каждый доступ.