Обзор на книгу "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!