hirthwork
13.02.2012 17:41 mcabber
пстач, есть один объект... в общем, чтобы не утомлять, сразу к делу. как
избежать возможных утечек памяти при схеме передачи владения объектом как
здесь:
std::auto_ptr<int> a(new int);
std::auto_ptr<std::auto_ptr<int> >(new std::auto_ptr<int>(a.release()));
предупреждая наличие на пстаче таких же долбоёбов что и на #c++, хочу сказать:
нет, я не использую std::auto_ptr, это всего лишь иллюстрация.
Recommended by:
@Rayslava: Кастую 0xd34df00d для темплейт-извращений.
это они у тебя друг на друга ссылаются что-ли?
ты нихуя не понял
Да.
Аааа, я допёр что ты делаешь. Ты превратил указатель в указатель на указатель не трогая при этом объект?
снова промах. я отдаю владение одним объектом другому, но при этом этот другой создаю тоже в куче. чтобы им владел третий объект.
А почему тогда должна утекать память?
И, да, почему промах-то? Всё верно. Был *int, стал **int. А сам int где лежал, там и лежит.
если во второй строчке случится bad_alloc, то память, выделенная в первой строчке, освобождена не будет.
был int* стал std::auto_ptr<int>*
Обрабатывать bad_alloc не вариант?
сам подумал, что сказал? я на каждый чих, что ли обрабатывать bad_alloc должен?
Да. И это будет так корпоративно…
В общем, подождем дедфуда. У него в личкрафтах всё через такую же жопу закручено…
у него через недо-C++11 закручено
А. Ну да. И буст.
очень просто:
std::auto_ptr<A> a(new A);
std::auto_ptr<std::auto_ptr<A> > b(new std::auto_ptr<A>());
b→reset(a.release());
вариант, но у меня reset нету и проще и красивее сделать через member-функцию, которая делает что-то типа ptr = new Storage(ptr);
ты пишешь свой смарт поинтер? всмысле нет reset?
я пишу свой рэйнджи, которые сделаны через pimpl. не зачем мне там reset
*незачем
ппц ты всё не уймешься норкоман...
>я не использую std::auto_ptr, это всего лишь иллюстрация.
так пиши что используешь блеать.
вот что я использую: https://github.com/hirthwork/raingee/blo... (про багу с инициализацией от двух итераторов знаю, нечего мне тут кричать)
ппц, ну тут даже без коментариев, жопа-bcb-mixed-style + gpl это что-то сюрреалистическое, лучше б уже сразу локи брал.
чо за хуйню ты несёшь? ты можешь заткнуться?
нет