Supongamos que he definido una clase como esta:despejar un vector de punteros
class foo {
private:
std::vector< int* > v;
public:
...
void bar1()
{
for (int i = 0; i < 10; i++) {
int *a = new int;
v.push_back(a);
}
};
void bar2()
{
std::vector<int>::iterator it = v.begin();
for (; it != v.end(); it++)
std::cout << (*it);
v.clear();
}
};
En resumen, hacer retroceder algunos punteros en un vector, más tarde puedo borrar el vector. La pregunta es, ¿este código tiene pérdida de memoria? Quiero decir, al borrar el vector, ¿los punteros se eliminan correctamente?
En realidad empuje solamente un único puntero al vector; el '' bucle for' en bar1' sólo ejecuta el 'new int; línea' ya que no tiene las llaves, y '' i +++ es un error de sintaxis y ... ah bueno, supongo que esto está destinado a ser pseudocódigo. –
@ Frerich Raabe: editado ... – mahmood
También necesita un vector de punteros int: 'std :: vector < int* > v;' en lugar de 'std :: vector < int > v;' – juanchopanza