Почему эта локальная переменная не освобождается в два раза с помощью 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); }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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