powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / shared_ptr и большие динамические массивы
1 сообщений из 26, страница 2 из 2
shared_ptr и большие динамические массивы
    #39355671
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivCEMbВектор - это динамический набор элементов. Допустим, мы храним там значения. Потом берём и делаем shared_ptr на один из элементов, а самому вектору делаем несколько erase(), что будет с созданным shared_ptr?

Ты не можешь так делать. Нельзя.Нельзя(т.е. очень плохо), но могу. Поэтому пока не придумал ничего лучше, использую опасные указатели.

MasterZivCEMbя сейчас так и делаю, по той же самой причине: у меня shared_ptr на единый кусок памяти, т.е. не может быть такой ситуации, что shared_ptr на массив живой, а кто-то в массиве дохлый.
Но сейчас я вообще убрал пока shared_ptr-ы, ссылающиеся на элементы массива, потому что нестыковка :) Хорошо бы иметь некое подобие weak_ptr в таком случае...

Ну и объясни , чем shared ptr на массив отличается от shared_ptr на вектор, содержащий элемнты по значению.
Ничем, только первое недопустимо (кажется по спецификации), второе -- вполне законно.
первое допустимо, в конструкторе shared_ptr<> можно передать указатель и удалятор для него, всё ок же.
shared ptr на массив отличается от shared_ptr на вектор тем, что размер массива не меняется, элементы из него не пропадают частично, не добавляются, т.е. создав его, я буду уверен, что он весь на месте, пока я не отпущу указатель. А shared_ptr на вектор никак не управляет самим вектором, набор элементов там может произвольно меняться. И зачем вообще делать shared_ptr на вектор? Его (вектор) можно просто объявить как переменную в классе.
...
Рейтинг: 0 / 0
1 сообщений из 26, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / shared_ptr и большие динамические массивы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]