Как управлять памятью в C#: StructLayout

Привет, Хабр! Сегодня рассмотрим тему, которая обычно ассоциируется с C или Rust, но никак не с C#. А именно — ручное управление памятью , байтовые смещения , бинарная сериализация и прочая низкоуровневые вещи. Зачем? Допустим, в одном из проектов потребовалось прочитать старый бинарный лог от С-подобной прошивки. Формат документации был: offset 0 — 1 byte: Type; offset 1 — 2 bytes: ID; offset 3 — 4 bytes: Timestamp; и т.д. Разбирать всё это вручную с BinaryReader? Нет, спасибо. Можно воспользоваться StructLayout, FieldOffset, MemoryMappedFile, Unsafe.As<T>() и Span<byte>.

https://habr.com/ru/companies/otus/articles/897264/

# #управление_памятью #ручное_управление_памятью #байтовые_смещения #бинарная_сериализация

Как управлять памятью в C#: StructLayout

Привет, Хабр! Сегодня рассмотрим тему, которая обычно ассоциируется с C или Rust, но никак не с C#. А именно — ручное управление памятью , байтовые смещения , бинарная сериализация и прочая...

Хабр

Проверка игрового движка qdEngine, часть вторая: упрощение C++ кода

В этой статье мы рассмотрим, как статический анализатор PVS-Studio воодушевляет заняться рефакторингом кода. Ведь чем короче, проще и понятнее код, тем меньше в нём ошибок.

https://habr.com/ru/companies/pvs-studio/articles/812795/

#PVSStudio #статический_анализ_кода #статический_анализатор_кода #SAST #qdEngine #Си++ #C++ #баги_в_играх #баги #ошибки_в_коде #программирование #рефакторинг #ручное_управление_памятью

Проверка игрового движка qdEngine, часть вторая: упрощение C++ кода

В этой статье мы рассмотрим, как статический анализатор PVS-Studio воодушевляет заняться рефакторингом кода. Ведь чем короче, проще и понятнее код, тем меньше в нём ошибок. В предыдущей статье "...

Хабр