C++ 11允許其實現執行(某些)垃圾收集實用程序。爲什麼標準允許這樣做?我總是有這樣的印象:在C++中,你不會爲你不使用的東西付費。對我來說,(隱含的)GC感覺就像破壞了這個意識形態。此外,通過智能指針在C++中編寫和使用顯式垃圾回收實用程序並不困難。爲什麼C++ 11允許GC?
其次,GC會使一些有效的程序無效。例子包括指針掩碼和相關的低級指針「黑客」。
int * nums = new int[10];
nums += 2;
*nums = 777; // nothing points to the new'ed int[10] at this point
// oh no! nums could have gotten collected!!! (so lets assume it was)
*nums = 666; // crash (or memory corruption (or something else that's bad))
如果垃圾收集器獲得釋放用於'Foo'對象的內存的選項,那並不意味着它必須先調用'Foo'的析構函數。 – hvd
@ hvd:對。我已更新我的問題 –
語言不支持指針掩碼和其他此類「低級指針黑客」;這些都是依賴於實現的。 –