Другие уже ответили на главный вопрос, но я хотел бы добавить, что сборка мусора возможна в C ++. Это не так автоматически, как в Python, но это выполнимо.
Умные указатели, вероятно, являются самой простой формой сборки мусора в C ++ - std::auto_ptr
, boost::scoped_ptr
, boost::scoped_array
, которые освобождают память после уничтожения , В одном из предыдущих ответов есть пример, который можно переписать так:
boost::scoped_array<char> ch(new char[100]);
ch[0] = 'a';
ch[1] = 'b';
// ...
// boost::scoped_array will be destroyed when out of scope, or during unwind
// (i.e. when exception is thrown), releasing the array's memory
Есть также boost::shared_ptr
, boost::shared_array
, которые реализуют подсчет ссылок (например, Python). И есть полноценные сборщики мусора, которые предназначены для замены стандартных распределителей памяти, например Boehm gc .