Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог умных указателей 
V
    Опции темы
Elfet
Дата 10.5.2010, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Всем привет! 

Очень часто использую умные указатели shared и weak. А недавно ко мне пришла идея сделать простой аналог таких умных указателей, который будет только хранить указатель на нужный объект и позволять проверять указатель на "битость" smile

Для этого нужно всего-лишь хранить указатель на объект в другом классе в куче. Как вам такая идея?  smile 


--------------------
PM MAIL WWW Skype   Вверх
azesmcar
Дата 10.5.2010, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



PM   Вверх
Elfet
Дата 10.5.2010, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Типо того, но без семантики владения. smile


--------------------
PM MAIL WWW Skype   Вверх
azesmcar
Дата 11.5.2010, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Elfet @  10.5.2010,  20:39 Найти цитируемый пост)
Типо того, но без семантики владения. smile 

а зачем? чем это не устраивает?
PM   Вверх
mes
Дата 11.5.2010, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Elfet @  10.5.2010,  19:39 Найти цитируемый пост)
но без семантики владения.  

Цитата(Elfet @  10.5.2010,  19:13 Найти цитируемый пост)
и позволять проверять указатель на "битость" 

а не поделитесь ли технологией проверки указателя на "битость" ?  smile  

Это сообщение отредактировал(а) mes - 11.5.2010, 10:08


--------------------
PM MAIL WWW   Вверх
Elfet
Дата 11.5.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



azesmcar, ну что бы постоянно не думать о том где использовать weak (циклические указатели) вместо shared. Получится что-то среднее между auto и shared/weak.

Цитата(mes @  11.5.2010,  11:08 Найти цитируемый пост)
а не поделитесь ли технологией проверки указателя на "битость" ?  

Хранить указатель в другом классе в куче. smile



--------------------
PM MAIL WWW Skype   Вверх
Леопольд
Дата 12.5.2010, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(Elfet @  11.5.2010,  13:00 Найти цитируемый пост)
Хранить указатель в другом классе в куче.
Что подразумевается под "битостью" указателя?



--------------------
вопросов больше чем ответов
PM MAIL   Вверх
mes
Дата 12.5.2010, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Леопольд @  12.5.2010,  08:31 Найти цитируемый пост)
Что подразумевается под "битостью" указателя?

То, что указатель не указывает на валидный объект.



--------------------
PM MAIL WWW   Вверх
Леопольд
Дата 12.5.2010, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(mes @  12.5.2010,  10:02 Найти цитируемый пост)
То, что указатель не указывает на валидный объект.
Цитата(Elfet @  11.5.2010,  13:00 Найти цитируемый пост)
Хранить указатель в другом классе в куче.
Не пойму, где тут связь? Какая разница где хранить указатель? Как место хранения может дать понять что объект, на который настроен указатель не валиден? smile 



--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Elfet
Дата 12.5.2010, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Леопольд, посмотри как устроены умные указатели.  smile 


--------------------
PM MAIL WWW Skype   Вверх
bsa
Дата 12.5.2010, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(Elfet @  12.5.2010,  13:36 Найти цитируемый пост)
Леопольд, посмотри как устроены умные указатели. 
На "битость" даже shared_ptr не проверяет. Он предполагает, что программист не идиот: дал ему корректный указатель и не рулит указателем самостоятельно. Другими словами, даже если ты скормишь корректный указатель shared_ptr, но затем тут же освободишь память из-под объекта, на который он указывал, то при попытке уничтожить shared_ptr ты получишь в лучшем случае сегфолт (или access violation). Поэтому забудь про проверку.
Если ты уберешь семантику владения, то ты получишь утечки памяти. Или лишнюю усложненность кода.
Возможно, тебе стоит почитать о шаблонах проектирования. Очень может быть, что ты найдешь совершенно неожиданные способы решения своей проблемы.

PM   Вверх
Леопольд
Дата 12.5.2010, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(Elfet @  12.5.2010,  13:36 Найти цитируемый пост)
Леопольд, посмотри как устроены умные указатели.
По разному...

Это сообщение отредактировал(а) Леопольд - 12.5.2010, 14:05


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Elfet
Дата 12.5.2010, 23:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



bsa, да, конечно же умные указатели гораздо продуманнее чем мой указатель. Без семантики владения и подсчёта ссылок утечка памяти конечно же будет, однако если самому контролировать её (освобождать где нужно, использовать finally) то тоже всё будет хорошо.

Думаю напишу такой класс указателей, чисто так. Для себя, потренироваться. smile


--------------------
PM MAIL WWW Skype   Вверх
Леопольд
Дата 12.5.2010, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Elfet, finally в С++?


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Elfet
Дата 12.5.2010, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Леопольд, ну, да smile Не совсем C++, но всё же можно, в VS __finally, в других можно обойтись define-ом.


--------------------
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0646 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.