Обзор на книгу "C++ Memory Management"

Обзор на книгу "C++ Memory Management"

Sehnsucht (https://t.me/cxx95)
Обложка книги


Ссылка на книгу.

Совсем новое (от начала 2025 года) 434-страничное руководство про память в C++. Автор - участник комитета по стандартизации языка. Боялся, что будет много воды, но зря - все написано четко и для тех, у кого уже есть опыт в языке.

С самого начала книги идет база, например:

  • Формализация того что такое "объект", "указатель", "ссылка" с точки зрения стандарта
  • Всякие базовые вещи, что "sizeof(T) > 0 для всех T", "delete nullptr это безопасно", "char*/unsigned char*/std::byte* могут указывать куда угодно и алиасить что угодно"
  • Современные идиомы "проверку if (*this == other) надо заменить на copy-and-swap", "использование std::exchange в move-конструкторах".
  • Узкие части стандарта, по типу костылей для union, что чтение из "common initial sequence" не является undefined behavior
  • Хорошая база про лайфтаймы в C++, описание "магических функций" которые его начинают

Узнал несколько интересных штук, например про "nothrow new" (C++14) или "destroying_delete_t" (C++20).


Краткий обзор по каждой части:

  • Part 1: Memory in C++ - Круто описанная база
  • Part 2: Implicit Memory Management Techniques - Написание своих умных указателей unique_ptr, shared_ptr и не только
  • Part 3: Taking Control (of Memory Management Mechanisms) - Переопределение operator new и других, игрушечный детектор утечек памяти, аллокатор с ареной, сборщик мусора
  • Part 4: Writing Generic Containers (and a Bit More) - Написание своих vector и forward_list, поддержка аллокаторов, современные задачи про памяти C++ которые решаются комитетом

Считаю, что книга must have!

Report Page