я пропускаю что-то об общих/слабых указателях:C++ 11: Как объект удален, если он был построен с использованием make_shared
Когда shared_ptr
строится с помощью make_shared
, используется только один выделение памяти (для выделения памяти для блока управления и самого объекта). Что произойдет, если последний shared_ptr
уничтожен, но есть weak_ptr
-s left? На этом этапе управляемый объект должен быть освобожден. Но если память, выделенная make_shared
, будет освобождена, это сделает недопустимыми слабые указатели, поскольку такое же освобождение приведет к уничтожению блока управления.
20.7.2.2.6/6: Замечания: Реализации поощряются, но не требуются *, для выполнения не более одной памяти . (Emphasis mine.) – cHao