Win32 affichage graphique fuite mémoire [Résolu]

Messages postés
140
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 septembre 2009
- - Dernière réponse : s@ldon
Messages postés
140
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 septembre 2009
- 21 déc. 2006 à 21:50
Bonjour a tous,

j'ai fait une petite application affichant un graphique. Mais lorsque je le lance, le programme me bouffe toutes les ressources sous win98 alors que sous xp, la mémoire est parfaitement gérée.
Je fais un affichage toutes les 50 ms. J'utilise les primitives suivantes :
TextOut,Rectangle, MoveToEx,LineTo.

Pourquoi cela marche-t-il nikel sous XP et pas sous win98 ????
Afficher la suite 

12 réponses

Meilleure réponse
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
3
Merci
Le problème vient du fait que la partie kernel de chaque processus est partagée par tous les processus et que toute intervention sur les objets kernel est très lente.
La disparition de ces antiquités ne sera regrettée par personne.

ciao...
BruNews, MVP VC++

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 120 internautes nous ont dit merci ce mois-ci

Commenter la réponse de BruNews
Messages postés
257
Date d'inscription
dimanche 22 août 2004
Statut
Membre
Dernière intervention
29 septembre 2010
0
Merci
Je sais pas c'est dur à dire mais comme cela marche sur XP ton code semble etre ok, donc c'est peut être un bug de window$ 98, ou un probleme de compatibilité (fonction de windows 98 != fonction de XP ???)
Commenter la réponse de vinc1008881
Messages postés
140
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 septembre 2009
2
0
Merci
ouais, c'est ce que je pensais. Je pensais aussi au fait le Win98 ne supporte peut-être pas les timers à 50ms. Je suis en train de tester avec un timer d'affichage à 1000 ms. Mais en 10 minutes, j'ai perdu 12% de RAM (250 MO au total).
Là, sous XP, sa fait 20 minutes qu'il tourne avec un affichage toutes les 50 ms, et pas un pet' de mémoire perdu (processus à 1300 KO).

C'est très bizarre...
Commenter la réponse de s@ldon
Messages postés
338
Date d'inscription
samedi 9 août 2003
Statut
Membre
Dernière intervention
9 juillet 2011
2
0
Merci
peux etre que ces fonctions ne se desalloue pas complement avec 98 je sais pas ca fais longtemps car il arrive souvent que des processus prenne du temps avant de vraiment avoir perdu toute la memoire car j'utilise ces fonctions sous xp et meme apres une heure apres une actualisation du processus j'ai 0 de fuite de memoire est tu sur de bien detruires tes objects car il me semble quela compatibilite est ok
Commenter la réponse de gamemonde
Messages postés
140
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 septembre 2009
2
0
Merci
Le problème ne vient pas de la gestion de mes objets, puisuqe le même programme sous XP ne fait pas de fuites mémoires alors que sous 98 oui.

Peut-être faut-il gérer l'affichage graphique d'une manière différente sous 98.
Brunews pourrait peut-être le savoir sa...
Commenter la réponse de s@ldon
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
4
0
Merci
Ou ptet que XP corrige certaines erreurs de ton prog ce que ne fait pas 98.
Commenter la réponse de luhtor
Messages postés
140
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 septembre 2009
2
0
Merci
Je viens de tester un programme d'affichage d'une montre avec le double buffering (cppfrance_source_11153) et sous 98, meme pb, au bout de quelques minutes (voire secondes), la mémoire était saturée. L'affichage ne se faisait plus correctement. Je pense que ça vient du système lui-même.
Il doit y avoir des fonctions particulières à utiliser sous 98.
Commenter la réponse de s@ldon
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
En effet, c'est fort probable que XP gère mieu la mémoire et les process que 98 et empêche la saturation. Il ce peut aussi que ce soi la GDI de 98 qui ai un problème de compatibilité.

C++ (@++)
___________________________________________
Venez débattre de sujets touchant à la programmation ici
Commenter la réponse de SAKingdom
Messages postés
3213
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
11
0
Merci
Ah autre chose. Utilise tu VC2005? Si oui, tu a une option qui te permet de rendre ton programme "compatible" avec 98. Je l'ai jamais essayé cependant. C'est dans les propriété de ton projet->linker->optimisation.

C++ (@++)
___________________________________________
Venez débattre de sujets touchant à la programmation ici
Commenter la réponse de SAKingdom
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13
0
Merci
Tu as testé sur Win 3.xxx ???
Allons soyons sérieux, il ne faut absolument plus perdre une seconde à chercher une compatibilité avec des systèmes totalement obsolètes, tout ce qui est < Win2K doit être abandonné.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
Messages postés
140
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 septembre 2009
2
0
Merci
Je viens de comprendre. En fait, les fonctions SelectObject et DeleteObject sont très mal gérées sous 98. Je créais mes HPEN à chaque affichage. Mais en ne le faisant qu'une seule fois au début du programme, il n'y a plus de fuite mémoire.
Commenter la réponse de s@ldon
Messages postés
140
Date d'inscription
samedi 1 novembre 2003
Statut
Membre
Dernière intervention
30 septembre 2009
2
0
Merci
Ouais, ça c'est sûr. Bref, merci à tous, j'ai résolu mon problème, même si ce dernier ne venait pas de moi.
Effectivement, un vieux Windows ne sera regretté par personne, mais le nouveau fait déjà parler beaucoup de lui ici.
Une nouveauté déjà bien regrettée par certains...

Sur ce, j'ai un kernel 2.6.19 à tester !

Encore merci à tous ceux qui m'ont répondu !!!
Commenter la réponse de s@ldon