TGViewer
C++95 C++95 @cxx95 · 1.51K subscribers
Post #27 548
C++95 #longread У std::unique_ptr есть минус - он аллоцирует память в куче. А что, если разработать его аналог с памятью на стеке?.. Об этом можно прочитать тут! https://habr.com/ru/post/665632/
#madskillz

Fast Pimpl

Концепцию из статьи (насколько понял, достаточно необычную) народ принял с трудом, в комментариях было бурное обсуждение и иногда непонимание.

В комментариях затронули тему Fast Pimpl (понятия, не сильно связанного со статьей). Это как раз жутко боянистая концепция.

PImpl используется, чтобы скрыть детали реализации и/или ускорить компиляцию. До его использования код в хидере выглядит так:
#include <third_party/json.hpp>
struct Value {
third_party::Json data_;
};

Стандартный подход заключается в замене T на std::unique_ptr<T>, потому что он разрешает использовать incomplete class:
namespace third_party { struct Json; }
struct Value {
std::unique_ptr<third_party::Json> data_;
};

Проблема, которая из-за этого возникает - аллокация объекта в куче, это замедляет рантайм PImpl-ового варианта ⏱ Поэтому используется подход Fast Pimpl:
struct Value {
std::aligned_storage<sizeof(T), alignof(T)> data_;
};
(вместо sizeof(T) и alignof(T) надо руками ввести нужную цифру)

То есть вместо самого объекта в структуре лежит буфер памяти под этот объект, и рулят именно им.

В интернете есть много реализаций этой идиомы (по гуглежу "Fast Pimpl"), и есть обёртки, которые хороши собой 🍬
  • 👍 3
More from @cxx95
  1. Sep 21, 2026#offtop Великое Мидревью 💼 В последнее время темы про C++ накапливаются медленно, и то та…
  2. Jun 17, 2026#jostik Обзор жостиков C++ 💼 (номер 5️⃣) В последние несколько месяцев совсем ничего не п…
  3. Jun 17, 2026document post
  4. Jan 7, 2026#compiler #ai На фото из марта 2024 - мерч с работы, это кофта и набор нашивок, которые мо…
  5. Jan 7, 2026document post
  6. Aug 18, 2025#books Текст в окружности - первые слова в опере (услышать) 🎤 📕 Обзор на книгу про памят…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →