bonjour à tous,
Je suis en train d'apprendre la programmation en C++ et j'ai u doute concernant la suppression propre des pointeurs afin d’éviter la surcharge mémoire
voila une partie de mon programme concernant le main
et maintenant la classe Garage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include <iostream> #include "Vehicule.h" #include "Moto.h" #include "Voiture.h" #include "Camion.h" #include "Garage.h" #include <string> #include<iostream> #include<vector> using namespace std; void presenter (Vehicule const &v) // prsente le vehicule passé en argument { v.affiche(); } int main() { Garage garage; Vehicule* v = new Voiture (25000, 1905, 18); garage.ajoutVehicule(v); garage.getListe() [0] ->affiche(); cout <<"*************************************************" << endl; garage.supprimeVehicule(); garage.~Garage(); // appel de la supression de tout les pointeurs
Ma question est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 #include "Garage.h" #include<vector> #include<string> #include<iostream> using namespace std; Garage::Garage() { //ctor } Garage::~Garage() { /* ****************************************************************************** Ne jamais oublier d'effacer les pointeurs Risque de saturation mémoire ******************************************************************************* */ for(int i(0); i<m_listeVehicules.size(); ++i) { delete m_listeVehicules[i]; //On libère la i-ème case mémoire allouée m_listeVehicules[i] = 0; //On met le pointeur à 0 pour éviter les soucis } } void Garage::ajoutVehicule(Vehicule* v) { m_listeVehicules.push_back(v); } void Garage::supprimeVehicule() { const int taille = m_listeVehicules.size() -1; cout << "taille avnat suppression : " << m_listeVehicules.size() << endl; delete m_listeVehicules[taille]; m_listeVehicules[taille] = 0; m_listeVehicules.pop_back(); cout << "taille apres suppression : " <<m_listeVehicules.size() << endl; // m_listeVehicules.pop_back(); } vector<Vehicule*> Garage::getListe() const { return m_listeVehicules; }
Est-ce que ma façon de proceder à l'effacement est correct ?
J'efface à la suppression d'un item dans la liste et la totalité dans ~garage()
en vous remerciant d'avance pour vos réponses
Partager