Raw pointers

Having proper destructors and an STD container with raw pointers will not save one from leaks.

if the elements are pointers, the pointed-to objects are not destroyed.

CPP reference

#include <algorithm> #include <iostream> #include <vector> class GoodData { public: GoodData(int id) : _id(id) { std::cout << "data [" << _id << "] constructor" << std::endl; } ~GoodData() { std::cout << "data [" << _id << "] destructor" << std::endl; } private: int _id; }; int main(int argc, char const *argv[]) { const int n_data = 5; { std::vector<GoodData*> array_of_good_data(n_data); std::generate(array_of_good_data.begin(), array_of_good_data.end(), [i = 0]() mutable { return new GoodData(i++); }); } // leak? return 0; }