Почему эта локальная переменная не освобождается в два раза с помощью Shared_ptr?C++

Программы на C++. Форум разработчиков
Гость
Почему эта локальная переменная не освобождается в два раза с помощью Shared_ptr?

Сообщение Гость »


В приведенном ниже коде b является локальной переменной и должна быть уничтожена в конце main() с помощью ее члена b.map. ptr_a является общим_ptr и также удалит память, на которую указывает.

struct A { станд::строка ул; }; структура Б { std::unordered_map карта; }; интервал основной() { Б б; b.map["ключ"] = A{"str"}; std::shared_ptr ptr_a(&b.map["key"]); } В моем понимании здесь должна быть двойная бесплатная выдача. Но на самом деле программа работает хорошо, без каких-либо ошибок.

Почему здесь не возникает ошибки?

Похожая программа выйдет из строя, есть ли между ними различия?
struct A { станд::строка ул; }; интервал основной() { А а; std::shared_ptr ptr_a(&a.str); }

Вернуться в «C++»