El problema de vaciar el puntero de almacenamiento Vector en C++

1. Escribe al frente

Una razón importante por la que C++ es difícil es el problema de la gestión de la memoria, porque hay que gestionar tanto la memoria de la aplicación como la liberación de memoria. Aquí hay un resumen del problema de borrar el puntero de almacenamiento de Vector en C++.
Este artículo se resume principalmente a partir de los siguientes dos enlaces de referencia:
[1] GilBert1987. El destructor en C++ y el problema de almacenar punteros en la matriz (Vector) [EB/OL].http://blog.chinaunix.net/uid - 17102734-id-2830007.html, 2009-04-07/2023-03-20.
[2] Castle 1994. Preguntas sobre vectores que almacenan variables de puntero [EB/OL]. https://blog.csdn.net/ weiqing_castle/ artículo/detalles/89532894, 2019-04-26/2023-03-20.

2. Prácticas de referencia

Una forma más segura de almacenar punteros en Vector de C++ cuando se vacía es:
(Se garantiza el siguiente método 有new,就必然有delete)

std::vector<int*> data_vec;
for(int i = 0; i < 10; i++)
{
    
    
	int* data = new int(i);
	data_vec.push_back(data);
}

std::vector::iterator vec_it = data_vec.begin();
for(; vec_it != data_vec.end(); vec_it++)
{
    
    
    if(*vec_it != NULL)
    {
    
    
      delete *vec_it;
      *vec_it = NULL;
    }
}
data_vec.clear();

Enlaces de referencia (estos dos enlaces están bien escritos, puede consultarlos a continuación)

[1] GilBert1987. El destructor en C++ y el problema de almacenar punteros en el arreglo (Vector) [EB/OL].http://blog.chinaunix.net/uid-17102734-id-2830007.html, 2009- 04 -07/2023-03-20.
[2] Castle1994. Varios problemas sobre vectores que almacenan variables de puntero [EB/OL]. https://blog.csdn.net/weiqing_castle/article/details/89532894, 2019- 04-26 /2023-03-20.

Supongo que te gusta

Origin blog.csdn.net/qq_39779233/article/details/129662444
Recomendado
Clasificación