Извините, если на это где-то явно ответили, но меня немного смутила документация буста и статьи, которые я прочитал онлайн.
Я вижу, что могу использовать функцию reset () для освобождения памяти в shared_ptr (при условии, что счетчик ссылок становится равным нулю), например,
shared_ptr<int> x(new int(0));
x.reset(new int(1));
Это, я полагаю, приведет к созданию двух целочисленных объектов, и к концу этих двух строк целое число, равное нулю, будет удалено из памяти.
Но что, если я использую следующий блок кода:
shared_ptr<int> x(new int(0));
x = shared_ptr<int>(new int(1));
Очевидно, что теперь * x == 1 верно, но будет ли исходный целочисленный объект (равный нулю) удален из памяти или я вытекла из этой памяти?
Мне кажется, что это может быть связано с тем, что оператор присваивания уменьшает счетчик ссылок shared_ptr, но взгляд на исходный код, похоже, не проясняет вопрос для меня. Надеюсь, кто-то более опытный или знающий может помочь мне. Заранее спасибо.