ulidtko 09.08.2011 12:23 work

a2k 03:19:11 PM
знаешь как в с++ джважды вызвать деструктор одного объекта? 03:20:48 PM

max ulidtko 03:20:57 PM
НО ЗАЧЕМ

a2k 03:21:05 PM
:33333333333333333333333333

max ulidtko 03:21:17 PM
ну и да, как?

a2k 03:21:29 PM
да хуй его знает, но почему-то джважды вызывается =\

max ulidtko 03:21:35 PM
:D

C++
Recommended by:

@magog: это вин. сделало мой день

and @Rayslava
1. werehuman 09.08.2011 12:24 Psi+

потому что он его джва раза удаляет, не?

2. ulidtkowerehuman /1 09.08.2011 12:25 work

как?!

3. beardogulidtko /2 09.08.2011 12:26 Instantbird

Obj*a = new A;
delete a;
delete a;

4. ulidtkobeardog /3 09.08.2011 12:27 work

это double-free, выкинется runtime error аллокатором.

5. jtootf 09.08.2011 12:27 mcabber.52f3ae25

да хоть бесконечность раз, вызвав delete this в деструкторе

6. ulidtkojtootf /5 09.08.2011 12:28 work

разве популярные реализации free() не делают проверку на не-вхождение указателя в кучу?

7. jtootfulidtko /4 09.08.2011 12:28

деструктор можно вызвать явно. а можно перегрузить operator delete() для своего класса, и вызывать его дважды там

8. jtootfulidtko /6 09.08.2011 12:29

а ты уверен, что в таком случае ты когда-нибудь дойдёшь до особождения памяти? сначала-то надо объект разрушить

9. ulidtkojtootf /7 09.08.2011 12:29 work

Class obj;
obj.~Class();
obj.~Class();

так?

10. jtootfulidtko /9 09.08.2011 12:30 mcabber.52f3ae25

например. в случае размещающего new у тебя других вариантов и не будет, тащемта

11. beardogjtootf /5 09.08.2011 12:31 Instantbird

кстати, вот это неплохая идея

Do you really want to delete ?