crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> boost::*_ptr, какой больше подходит?
void*
  опции профиля:
сообщение 11.7.2008, 19:20
Сообщение #1


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


мне нужен самый обычный смарт-поинтер, который бы при выходе из скопа подчищал бы память за своим объектом, какой указатель для этого лучше подходит?
также, может ли кто-нибудь охарактеризовать разные виды бустовских смарт-поинтеров? какие особенности, где лучше использовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 11.7.2008, 21:04
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


scoped_ptr именно это и делакт.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 11.7.2008, 21:37
Сообщение #3


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


еще один вопрос: допустим есть
{
boost::scoped_ptr<MyClass> ptr = new MyClass;

можно ли освобождать память самому? например так:
if(...) delete ptr; //память очищается при выполнении какого-то условия
}

будет ли все корректно происходить и в случае невыполнения if-инструкции scoped_ptr очистит память сам, если она не была освобождена?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 12.7.2008, 8:29
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Нет. Памятью занимается сам scoped_ptr.
delete ptr вообще не скомпилиться, т.к. ptr не является указателем.
Если нужно досрочно удалить объект, можно написать ptr.reset();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
void*
  опции профиля:
сообщение 14.7.2008, 8:01
Сообщение #5


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


Tonal, спасибо, буду знать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Andrew Selivanov
  опции профиля:
сообщение 14.7.2008, 10:18
Сообщение #6


Участник
**

Группа: Участник
Сообщений: 249
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 3

Спасибо сказали: 15 раз(а)




Репутация:   6  


Цитата(void* @ 11.7.2008, 20:20) *
мне нужен самый обычный смарт-поинтер, который бы при выходе из скопа подчищал бы память за своим объектом, какой указатель для этого лучше подходит?
также, может ли кто-нибудь охарактеризовать разные виды бустовских смарт-поинтеров? какие особенности, где лучше использовать?

Если ты не собираешься пихать указатели в контейнер, рассмотри std::auto_ptr :)
Ну а boost указатели хорошо расписаны в доках http://www.boost.org/doc/libs/1_35_0/libs/...r/smart_ptr.htm

Сообщение отредактировал Andrew Selivanov - 14.7.2008, 10:20
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2024, 5:10