J'ai beaucoup appris ces derniers jours sur la programmation en C++. J'adore ça :)
Je sais que je devrais libérer de la mémoire - les règles dorées "chaque malloc = libre" ou "chaque nouvelle = supprimer" existent maintenant dans mon monde, mais je les utilise pour des objets plutôt simples.
Qu'en est-il du vecteur? Quand je le peux, j'utilise vector.clear() mais cela ne suffit pas, car j'ai d'énormes fuites de mémoire.
Pourriez-vous me guider sur la façon dont je devrais traiter cette chose? Merci, vos commentaires m'ont fait penser à l'algoritme de cette application et je serai en mesure d'éliminer totalement le vecteur. : O
Désolé - J'ai commencé à expliquer mon cas d'utilisation ici et j'ai découvert ce dont j'avais vraiment besoin. C'est comme ça quand vous codez les 3 derniers jours pendant 18 heures par jour: | * Éditer 2
C'est fou. Par de petits changements de code, j'ai éliminé l'utilisation de la mémoire de 2x130 mb (en croissance constante) en 2x 13,5mb, taille constante. Merci de m'avoir fait réfléchir d'une autre façon.Dois-je supprimer le vecteur <string>?
Btw. un tel examen de code personnel a un nom - quelqu'un s'en souvient-il? C'est quand vous demandez à quelqu'un (même votre mère ou votre chien) et commencez à expliquer quel est votre problème - et soudain vous résolvez vous-même ce problème de 5 heures, simplement en essayant de le regarder d'un autre point de vue ou en résumant tout sur. Je me retrouve souvent attrapé sur ce ...
Puisque vous êtes nouveau dans la gestion de la mémoire, vous pourriez peut-être expliquer comment vous savez que vous avez des fuites de mémoire. Certaines façons de mesurer les fuites de mémoire ne reflètent pas vraiment ce qui se passe. –
Vous pouvez publier un exemple de code sur la façon dont vous utilisez la classe de vecteur. Par exemple, avez-vous des vecteurs de pointeurs vers des objets créés dynamiquement? –
bien, je vois simplement que l'exécution de mon application entraîne de plus en plus de mémoire occupée. J'exécute des opérations assez faciles (faire des hachages md5 dans 2 processus, liés avec mpcih2), pour mon test c'est exactement 25 millions d'opérations. Un processus envoie aux autres paquets de données (chaînes) et le second calcule des hachages pour cela. À la fin de l'exécution, j'ai pris 2 x 130 mb. C'est beaucoup trop pour être normal. – IamDeveloper