Уроки С++. Изучение С++ {#17}. Умные указатели. shared_prt + weak_ptr.

preview_player
Показать описание

Обучение языку программирования С++.
Изучение С++. Набор уроков по изучению с++.
---------------------------------------------------------------------------------------------
!ВАЖНО! Помощь каналу
Яндекс кошелек - 4100 1163 2706 8392

---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
#cppprosto
#сиплюсплюс
#ityoutubers
#советыс++
#урокис++
#урокисиплюсплюс
#c++
#cpp
#cplusplus
#урокипрограммирование
#программист
#программирование
#выучитьпрограммирование
#онлайнуроки
Рекомендации по теме
Комментарии
Автор

Проблема перекрестного указателя описана, но Вы так и не дали объяснение, почему же не вызывается деструктор объекта при такой ситуации.
Насколько я понимаю деструктор не уничтожает объект, потому как счетчик shared_pointer всегда остается равен 1 и существует strong ref на объект. Когда же меняется shared_pointer на weak_pointer, счетчик shared_pointer становится равным 0 и объект уничтожается без проблем, хотя при желании для взаимодействия с объектом до его уничтожения можно привести weak_pointer в shared_pointer.
Поправьте, если я ошибаюсь.

olliverkatana
Автор

пж можешь скинуть пример кода где с shared_ptr создать двумерный динамический массив, заполнить и вывести на консоль?
const int size = 5;
ptr(new shared_ptr<int[]>[size]);
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{

cout << ptr[i][j] << " ";
}
cout << endl;
}


и выводит исключение, мол Вызвано исключение: нарушение доступа для чтения.
[0]> [0]> [5], std::shared_ptr<int [0]>, 0>(...) вернул nullptr.
помоги пж ужее долгое время ищу ответ не могу найти

___________________-pg