Здравствуйте, gandjustas, Вы писали:
G>Вышла новая версия стандарта? Появился сборщик мусора? Код на С++ стал верифицируемым? Появился вывод типов?
Однажды я участвовал в одном проекте на С++, в котором использовался самопальный сборщик мусора. Причем он был оченб мощный и умел разруливать циклы и всякие сложные зависимости. Так программа с использованием этого gc жрала память как свинья помои. И довольно много времени приходилось искать объект который держал ссылку.
Если ты думаешь что в джаве или сишарпе память не может утекать, то ты ОЧЕНЬ заблуждаешься. Там точно также возможны ситуации когда кто-то будет держать объект, из-за этого не будет вызван его деструктор, а из-за этого не будет закрыт ремотный коннекшин ...
Единственное что в управляемых языках лучше — это невозможность такой ситуации:
std::vector<MyClass*> array;
array.push_back(new MyClass());
array.push_back(new MyClass());
array.push_back(new MyClass());
vector.clear()
или еще
class CopyableClass
{
public:
CopyableClass() : Value(new Object()){}
~CopyableClass() { delete Value;}
private:
Object* Value;
}
но подобные ситуации замечательно лечатся с использованием std::auto_ptr и std::shared_ptr.
и никакие мемори лики не страшны.
UNIX way — это когда тебе вместо туалетной бумаги дают топор, рубанок и карту близлежащего леса