Re: удаление вызывающего объекта, и непонятка с размоткой стека
От: Evgeny.Panasyuk Россия  
Дата: 13.03.13 14:01
Оценка:
Здравствуйте, niXman, Вы писали:

X>в чем вопрос?: вопрос в том, что как вы можете видеть в выводе(ниже), когда item по адресу 0xda6370 зовет 'container::delete_me(id)' для себя же, что происходит со стеком? стек ведь должен размотаться до уровня, из которого вызвали 'container::delete_me(id)', но объект же удалится раньше чем стек размотается %)


В твоём случае он не удаляет "себя же", это делает "ios.run();" :
http://liveworkspace.org/code/2brGJU$8

stderr:
item 0 created. time=2 (0xbdc110)
item 1 created. time=1 (0xbdc370)
started!
time-out for item 1 expired, request for delete it (0xbdc370)
before erase item 1 (0xbdc370)
dtor item 1 (0xbdc370)
after erase item 1 (0xbdc370)
time-out for item 0 expired, request for delete it (0xbdc110)
before erase item 0 (0xbdc110)
dtor item 0 (0xbdc110)
after erase item 0 (0xbdc110)

finished!

P.S. не надо лезть в итератор после erase.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.