Когда возвращается createObjA
, shared_ptr выходит из области видимости и уничтожает объект.Теперь вы возвращаете неверный указатель.
Конструктор Obj_B берет копию указателя.Когда этот объект уничтожается, shared_ptr будет пытаться уничтожить его снова.
Когда main()
выходит, третий shared_ptr уничтожается и делается другая попытка уничтожить недопустимый указатель.