У меня есть структура, которая содержит несколько векторов, определенных следующим образом:
#include <vector>
using namespace std;
struct data{
vector<float> x;
vector<float> y;
vector<float> z;
}
, которые я позже использую как таковые:
data d;
for(int i; i<3; i++){
d.x.push_back(i)
d.y.push_back(i*2)
d.z.push_back(i*3)
}
И теперь я хочу безопасно удалитьdata
таким образом, полностью освобождает всю память, связанную с ним.Я думаю, что способ сделать это - написать простой деструктор, который очищает и освобождает каждое поле data
, а затем delete
объект:
struct data{
vector<float> x;
vector<float> y;
vector<float> z;
~data(){
vector<tempObject>().swap(x);
vector<tempObject>().swap(y);
vector<tempObject>().swap(z);
}
}
, и тогда это должно работать:
data d;
for(int i; i<3; i++){
d.x.push_back(i)
d.y.push_back(i*2)
d.z.push_back(i*3)
}
delete data;
где я воспользовался верхним ответом здесь , чтобы освободить векторы.
Будет ли это работать?Если нет, можете ли вы описать, почему и / или предложить альтернативу?Я понимаю, что память будет освобождена, как только d
выйдет из области видимости, но мне нужно освободить память до того, как это произойдет.