Есть ли способ any
Я могу наложить ограничение размера на буфер символов, чтобы никакая операция в буфере не приводила к доступу за пределы границ?налагать ограничения на размер буфера
ответ
Короче говоря: Нет
C не не выполняет никаких проверок во время выполнения, если вы не сделаете их вручную.
Вы можете использовать свои собственные функции, макросы и буферизацию для каждого буфера для защиты от недействительных обращений. Однако вам придется использовать этот интерфейс везде, что означает, что вы потеряете прямой доступ к этому буферу.
Вы также увидите влияние на производительность из-за дополнительных проверок условий. Возможно, вы сможете избежать некоторых из них, используя прямой доступ к ветвям кода, которые, как доказано, не приводят к обратным вызовам вне пределов.
EDIT:
Существует также довольно основной вопрос «что нужно код делать, когда обнаружен недопустимый доступ». Должна ли ваша программа вывести ошибку и выйти, как если бы она встретила исключение на других языках? Следует ли игнорировать ошибку? Должен ли он попытаться исправить это?
С помощью этой возможности вы можете проверить, что каждая ветвь/часть кода безопасна заранее, а не проверять каждый доступ.
Это может помочь: http://duma.sourceforge.net/ в вашем запросе.
Короткий ответ: Нет
Длинный ответ:
Чтобы обеспечить даже что-то так глупо, как buffer[ULLONG_MAX]
не выходит за пределы, вы должны объявить буфер с присоединенным больше самого большого целого числа представимые в системе. Это, очевидно, невозможно, кроме объема памяти, который нужен такой буфер.
Практическое решение состоит в том, что вы вручную отслеживаете размер вашего буфера, а любая ненадежная индексация в буфер проверяется на размер буфера.
См. Наш Memory Safety Checker, который используется в качестве вспомогательного средства для отладки, и позволяет использовать ваш код C для определения ошибок в массивах или буферах. Это находит проблемы, которые не могут сделать valgrind.
- 1. Ограничения на размер массива
- 2. Размер буфера для буфера WebGL не равен Размер холста
- 3. Ограничение на размер буфера обмена
- 4. изменить размер буфера на MediaPlayer
- 5. Размер буфера для буфера замещения
- 6. Ограничения на размер документа CouchDB
- 7. Установка ограничения на размер очереди
- 8. Ограничения на размер данных Navigator.sendBeacon()
- 9. chrome.windows.update ограничения на размер окна
- 10. Ограничения на размер сообщения cURL
- 11. Ограничения буфера массива Strange Texture
- 12. Размер буфера захвата WASAPI
- 13. Оптимальный размер буфера Android
- 14. Минимальный размер сетевого буфера
- 15. Размер буфера QSqlQuery
- 16. Размер буфера NSInputStream
- 17. Максимальный размер буфера ObjectOutputStream
- 18. Размер буфера в Java
- 19. Hadoop context.write() размер буфера
- 20. Требуется размер буфера
- 21. Размер буфера приема Socket
- 22. AudioRecord размер буфера
- 23. Является ли Java налагать дополнительные ограничения на имена файлов, отличные от базовой операционной системы?
- 24. BufferedImage неправильный размер буфера
- 25. Размер буфера Проблема
- 26. Есть ли размер буфера, прикрепленный к stdout?
- 27. Размер буфера плагина Python
- 28. Размер выходного буфера OutputStreamWriter
- 29. Размер буфера сервера UDT?
- 30. Размер буфера в C