С std::vector
дело в том, что его данные всегда в куче.
Следовательно, вам не нужно выделять std::vector
в куче.
std::vector
использует принцип, называемый RAII (Resource Acquisition is Initialization), это означает, что когда он выполняется с памятью, он освобождает его для вас.
Следовательно, этого достаточно
{
std::vector<int> x{};
for (size_t i = 0; i < 50000; i++) x.push_back(x);
} // x gets out of scope, memory is freed
Вам не нужно вручную освобождать память std::vector
.
Теперь, скажем, вы выделите саму std::vector
в кучу по любой причине , Тогда вам придется использовать delete vector;
, чтобы освободить его. В этом сценарии я бы предложил std::unique_ptr<std::vector<T>>
, поскольку он также использует тот же принцип (RAII).