begin process at 2012 05 29 23:28:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

Fichier & Disque

 > 

Libération de mémoire dans une application


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Libération de mémoire dans une application

vendredi 13 juin 2008 à 12:29:01 | Libération de mémoire dans une application

Rankin

Bonjour à tous !

Je bosse actuellement sur le développement d'un programme d'analyse de logs. Sans rentrer dans le détail, il ouvre des fichiers matchant avec un motif donné dans un répertoire spécifié, lit le contenu et enregistre des alertes dans une base de données si il récupères n occurrences d'un certain message, ou un message non identifié par l'administrateur.
Le fonctionnement est basé sur une architecture objet ; donc pour chaque message lu présentant a priori un intérêt, un certain nombre d'objets est créé en mémoire. Le programme est supposé tourner en arrière plan sur des serveurs, donc il est primordial qu'il ne consomme pas trop de mémoire. Tous mes objets créés sont créés par un new et supprimés par un delete, lorsque je n'en ai plus besoin ou que le programme est interrompu ; pareil pour les variables de type tableau effacées par delete[] ; j'ai vérifié par des écritures dans des fichiers qu'il y avait bien autant d'objets créés que supprimés.
Cependant, si je fais un top pendant l'exécution, je monte à 200Mo de mémoire consommée ; c'est normal parce que je lis énormément de lignes, mais après qu'elles soient lus la mémoire n'est pas libérée, elle ne l'est qu'après l'arrêt du programme...

Je fais donc appel à votre science pour savoir s'il n'est pas possible de faire des appels réguliers à un équivalent du garbage collector, ou quelque chose qui puisse "officialiser" la libération de la mémoire pendant l'exécution...

Merci à vous !


vendredi 13 juin 2008 à 15:03:44 | Re : Libération de mémoire dans une application

juju12

Ben c'est à toi de supprimer tes objets quand tu n'en as plus besoin. Si ta mémoire n'est pas libérée alors que tu as détruit tes objets, c'est que tu ne l'as pas fait correctement et que tu as des fuites mémoires quelque part, donc fouille ton code pour vérifier que TOUTE allocation de mémoire a une désallocation correspondante.

vendredi 13 juin 2008 à 15:07:42 | Re : Libération de mémoire dans une application

Rankin

C'est bien ca le problème... les objets sont supprimés ! j'ai fait un test en écrivant dans un fichier a chaque création d'objet, et dans un autre à chaque destruction. Il y a autant de lignes...
vendredi 13 juin 2008 à 16:05:57 | Re : Libération de mémoire dans une application

juju12

Ca pour les objets OK mais à l'intérieur de ceux-ci, est-ce que tu alloues de la mémoire (genre des tableaux, des listes, ou n'importe quoi)?
vendredi 13 juin 2008 à 16:08:06 | Re : Libération de mémoire dans une application

SAKingdom

Membre Club
Ce ne sont peut-être pas les objets qui ne sont pas désalloués.
As-tu d'autres allocations dynamiques dans ton code à part les objets ?

C++ (@++)

vendredi 13 juin 2008 à 16:08:47 | Re : Libération de mémoire dans une application

SAKingdom

Membre Club
Oops, juju12 m'a devancé.

C++ (@++)

vendredi 13 juin 2008 à 16:08:52 | Re : Libération de mémoire dans une application

Rankin

Oui, je crée des char*, des maps et des lists, que je delete également à la suppression des objets...


vendredi 13 juin 2008 à 16:11:22 | Re : Libération de mémoire dans une application

juju12

ben faut croire que t'en as oublié...puis-je te suggérer de re-vérifier en détail?

vendredi 13 juin 2008 à 16:19:29 | Re : Libération de mémoire dans une application

Rankin

Je viens de découvrir un debugger qui s'appelle Valgrind et qui est particulièrement bien foutu, j'ai apparemment quelques fuites. Damned, je pensais vraiment avoir rien oublié... bon, je vous tiens informé dans la semaine qui vient, en tout cas je crois vraiment que ce truc va bien m'aider à localiser mes oublis !


mardi 17 juin 2008 à 09:54:46 | Re : Libération de mémoire dans une application

Rankin

Réponse acceptée !
Bon, je cloture la discussion, Valgrind est vraiment génial pour debugger et contrôler les fuites de mémoire ! Je n'avais que quelques oublis mais ca suffisait pour faire exploser la consommation...
Merci pour vos réponses en tout cas !




Cette discussion est classée dans : message, programme, mémoire, objets, libération


Répondre à ce message

Sujets en rapport avec ce message

Erreur de mémoire ? [ par larion ] Bonjour,Je viens de réaliser un projet (~2000 lignes) avec C++Builder permettant de gérer des bureaux virtuels.Ce programme utilise une Dll qui est a Libération de la mémoire [ par norton ] Bonjour à tous,Je me suis demandé si en mettant le code "exit(1);" pour quiter un programme ca libère toute la mémoire que le programme utilise ?? Ou Taille mémoire limite? [ par by_rabbit_08 ] Bonjour!Est-ce qu'il  y a une taille de mémoire allouée limite à un programme (si on spécifie rien du tout donc..). Parce que dans mon programme qui e Allocation mémoire [ par loicus ] Bonjour,voila j'ai un très gros problème....j'ai fais un petit programme pour calculer des transformées de Fourierdonc j'utilise des tableaux assez lo aide sur le fonctionnement de GetMessage Pb pour sortire de la boucle [ par achatagogo ] salut,je veux réalisé sous DEV C++ un programme qui me permet de tester des clavier. En effet, pour cela j'ai utilisé un HOOK sans DLL qui me permet d FMOD libération de la mémoire.... [ par MorbhAck ] Bonsoir a tous !J'amerai savoir comment on libère le mémoire avec FMOD.Je suis en train de faire un Chipdisk (une sorte de Jukebox)et le problème c'es Shaders : avec ou sans réserve ? [ par eplanet ] Bonjour à tous, je fais programme avec DirectX et j'aurai aimé avoir votre avis sur cette question : est-ce que le "tout shader" (à la fois vertex et Interaction programme C et objet flash [ par BloP68 ] Bonjour tout le monde,Je voudrai crée une application en C qui pourrait agir sur certains éléments d'une animation flash déja charger en mémoire.J'aim empêcher la mention "pas de réponse" [ par ndubien ] Bonjour,Le titre n'est peut-être pas très explicite.Je vous explique ma situation, lorsque mon programme recois le message WM_CONTROL, IDOK, il fait a Fuite mémoire C++ Builder [ par BernieNoel68 ] Bonjour!Je suis un petit nouveau sous C++ Builder, en sachant qu'avant j'étais sous Delphi.Existe t'il un moyen simple a mettre en oeuvre sous C++ Bui


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,293 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales