Я создал объекты с помощью new, но затем разыменовал их перед добавлением в вектор. Несмотря на то, что я трахаюсь в интернете, я не могу понять, как я могу вызвать удаление этих объектов. Я хочу сделать это, просто используя стандартные C ++ и STL. Я не хочу (например) использовать библиотеки Boost.
Как видите, a, b и c теряют область видимости, и я остаюсь с тем, что, как я предполагаю, будет копиями в векторе. Как я могу удалить их? Я не хочу хранить указатели в массиве, так как мне нужно будет передать API-функцию массив значений типа double.
Пожалуйста, кто-нибудь - как мне удалить эти объекты?
#include <iostream>
#include <vector>
using namespace std;
vector<double> vectorDouble;
void createObjects();
void createObjects() {
double* a=new double(13);
double* b=new double(14);
double* c=new double(15);
//a,b and c are not contiguous memory blocks
cout << "memory location of a: " << a << endl;
cout << "memory location of b: " << b << endl;
cout << "memory location of c: " << c << endl;
vectorDouble.push_back(*a);
vectorDouble.push_back(*b);
vectorDouble.push_back(*c);
}
int main() {
createObjects();
//the memory addresses are contiguous 8 byte chunks
cout << "vector memory at 0: " << &(vectorDouble[0]) << endl;
cout << "vector memory at 1: " << &(vectorDouble[1]) << endl;
cout << "vector memory at 2: " << &(vectorDouble[2]) << endl;
//get pointer to the 2nd element
double *P=&(vectorDouble[1]);
//dereference and look inside - two memory locations both contain the value 14
cout << "vector Pointer P ["<< P <<"] contains " << *P <<endl;
//Which should I call delete on? I have lost reference to the original pointers.
//How should I call delete on the vector?
cout << "deleting pointer that references 2nd vector element" << endl;
delete P; //********* CRASH **********
cout << "Done deleting" << endl;
}