bonjour,
aujourd'hui, problèmes de comptage.
donc, j'ai un vector dans lequel je stocke des instances d'une classe, instances créées, sauf erreur, en statique avec :
jusque ici, tout marche, ça compile et ça s'exécute comme prévus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 // dans le .h std::vector <Food> Foods; Food food; //et qq part dans le .cpp Food food(x,y); Foods.push_back(food);
Je désire maintenant connaitre le nombre d'instance de la classe Food en mémoire et la place que cela prend.
j'ai donc ajouté à ma classe et au constructeur:
Jusque ici, tout vas bien, j'en ajoute un, cela comptabilise.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 static int nbFood; static int nbMemory; // et nbFood ++; memory += sizeof(Food);
Cela se gatte lorsque je supprime un food que je voudrais du coup comptabiliser en moins dans nFood.
dans le destructeur m'affiche n'importe quoi, vus fort logiquement comme j'ai pu le lire, que le destructeur est appelé de façon implicite dès que le programme quitte la portée dans lequel l'objet existe, ce qui est visiblement régulièrement le cas avec des appels du type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 nbFood --; memory -= sizeof(Food);à de multiples endroits de mon programme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Foods[i].qqchose()
Je ne voudrais pas avoir à passez par l'allocation dynamique et les pointeurs, apparemment des vectors de pointeurs étant une quasi hérésie(surtout que je risque fort de ne pas maitriser la chose et de finir avec au mieux du code qui ne compile plus)...
Mais j'aimerais bien tout de même pouvoir suivre le nombre de Food crées et la place occupée...
Deux questions donc :
1 - puis je considérer qu'apres
le dernier food stocké et retiré de Foods n'existe plus nul part et est bien effacé de la mémoire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part Foods.pop_back();
2 - Y a t'il une combine pour faire le petit comptage tant espéré sans passer par l'allocation dynamique ?
Partager