[Перевод] Безопасные операции zero-copy на C#
C# — гибкий язык. На нём можно писать мобильные и десктопные приложения, игры, веб-сайты, сервисы и API. Можно писать на нём, как на Java, со всеми абстракциями и AbstractionFactoryClassProvider. Но, в отличие от Java, на нём также можно писать низкоуровневый и небезопасный код. И когда я говорю о низкоуровневом, то имею в виду отсутствие сборщика мусора и сырые указатели.
Низкоуровневый код обычно требуется для высокой производительности или взаимодействия с библиотеками C/операционной системой. Низкоуровневый код помогает повысить производительность благодаря тому, что с его помощью можно избавиться от проверок доступа к памяти в среде исполнения.
Для безопасности доступ к элементам массивов выполняется в C# с проверкой границ. Но из-за этого страдает производительность, если только, конечно, компилятор не сможет избавиться от операции проверки границ. Логика устранения проверок границ должна гарантировать, что проверка границ индекса массива уже выполнялась раньше или что во время компиляции индекс точно будет находиться в границах. Для примера возьмём простую функцию:
Читать далееИсточник: Хабрахабр
Похожие новости
- Design by Contract в эпоху AI: как контракты Мейера защищают криптографию там, где тесты молчат
- Schnorr/MuSig2 Nonce-Forensics:
- SEBERD IT Base: почему я сделал ещё один сайт про кибербезопасность и зачем
- Приватная Cвязь на Go и Flutter
- Манифест созидателя
- OSINT для ленивых. Часть 8: GEOINT по фото за 3 минуты
- MarketingNews: Кейс: «Призы от всего атомного сердца». как «Пятёрочка» создала фиджитал-вселенную с Atomic Heart и переосмыслила механику промоакций
- Как я собрал себе C2 на малинке за один вечер
- Краткая история биометрии: как была изобретена идентификация по радужке глаза
- Мыслепреступление на Android: как скрыть Перехватчик трафика от Государственных приложений