Исходные объекты будут находиться вне области видимости, но метод push_back()
фактически создает их копии, потому что они передаются по значению. Поэтому при выходе из функции initobjs()
копии все еще находятся в векторе; они будут освобождены, когда вы удалите их из вектора или когда сам вектор выйдет из области видимости.
Если бы вектор был vector<OBJ*>
, то это было бы совсем другое дело: это означало бы, что вам придется вручную удалять каждый объект в тот момент, когда вы удаляете его из вектора (если вы не сохраните его в другом месте).
Обратите внимание, что C ++ вообще не имеет встроенной системы управления памятью, кроме переменных, выделенных стеком, которые освобождаются по окончании их области действия. RAII - это модное слово, которое вы ищете на тот случай, если хотите немного больше осознать себя.