Освобождение памяти vector C++

173
28 марта 2018, 05:37

Доброго времени суток, возникла проблема с освобождением памяти. Весь код цельный копипастить не буду,вот элементарная часть в которой уже присутствует ошибка :

 vector<Circle*> vector;
 for (int i = 0; i < vector.size(); i++)
 {
    delete vector[i];
 }
 vector.clear();

Однако при проверке через Valgrind уже появляется ошибка, в которой говорится:

total heap usage: 1 allocs, 0 frees

Также пробовал чинить это через swap - не помогло.Так как очистить полностью эти магические вектора ?

UPD : более полная версия кода

vector<Circle*> vector;  
int k ;
bool exit = false;
while(!exit)
{
    cin>>k;
    if (k == 1)
    {
        for (int i = 0; i < vector.size(); i++)
        {
            cout<<vector[i]->GetName()<<" ";
            cout<<vector[i]->GetR()<<" ";
            cout<<"("<<vector[i]->GetX()<<"; "<<vector[i]->GetY()<<"; "<<vector[i]->GetZ()<<")"<<endl;
        }
    }
    else if (k == 2)
    {
        int x,y,z,R;
        string name;
        cout<<"Введите поля шара:"<<endl;
        cout<<"x: ";
        cin>>x;
        cout<<"y: ";
        cin>>y;
        cout<<"z: ";
        cin>>z;
        cout<<"R: ";
        cin>>R;
        cout<<"name: ";
        cin>>name;
        Circle * p = new Circle (x,y,z,R,name);
        vector.push_back(p);
    }
    else if (k == 3)
    {
        int x,y,z;
        cout<<"Введите координаты точки:"<<endl;
        cout<<"x: ";
        cin>>x;
        cout<<"y: ";
        cin>>y;
        cout<<"z: ";
        cin>>z;
        for (int i = 0; i < vector.size(); i++)
        {
            if (vector[i]->Distance(x,y,z) <= vector[i]->GetR())
            {
                cout<<vector[i]->GetName()<<" ";
                cout<<vector[i]->GetR()<<" ";
                cout<<"("<<vector[i]->GetX()<<"; "<<vector[i]->GetY()<<"; "<<vector[i]->GetZ()<<")"<<endl;
            }
        }
    }
    else exit = true;
}
for (int i = 0; i < vector.size(); i++)
{
    delete []vector[i];
}
vector.clear();
return 0;
READ ALSO
Запуск onboard вместе с приложением

Запуск onboard вместе с приложением

Можно ли вставить system("onboard"); в приложение Qt при его запуски от root?

180
&ldquo;std::out_of_range&rdquo; при обращении к элементу строки

“std::out_of_range” при обращении к элементу строки

Задание: перевернуть все части строки, заключенные в скобках, начиная с самого нижнего уровня вложения, удалить сами скобкиДля строки "Code(Cha(lle)nge)"...

206
Проблема с рандомизацией

Проблема с рандомизацией

Пытаюсь заполнить такую табличку:

206
как преобразовать void (*Class::)() в void (*)()

как преобразовать void (*Class::)() в void (*)()

Дело в том, что я хочу в OpenGL в функцию glutDisplayFunc передать метод класса

212