Czy UB ponownie wykorzystuje pamięć obiektu bez niszczenia go w pierwszej kolejności?
Biorąc pod uwagę typ bez PODT
:
auto p = new T();
::new (p) T();
/* ... */
delete p;
To jest UB, prawda?
Najwyraźniej nie przepuszczam bezpośrednio przydzielonej pamięciT
(i jeśli nie ma żadnych pośrednich członków, to w ogóle nic nie wycieku), ale nigdy nie został zniszczony, co wydaje mi się doskonałym kandydatem do spontanicznego unicestwienia galaktyk zaludnionych przez czujące istoty podobne do kota.
Dzięki@ Xeo za, „inspirowanie” tego pytania w C ++ Lounge.