begin process at 2012 05 30 22:47:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

Vider la pile


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

Vider la pile

vendredi 21 février 2003 à 11:47:19 | Vider la pile

Tyozhebes

Bonjoir à tous!

J'ai une question qui m'est toujours et depuis longtemps sans réponse. Je programme sous Visual C/C++ 6.0 et certain de mes programmes ont des problèmes de compatibilité (généralement tout ce qui est jeux utilisant un timer) avec les systèmes de noyau de type NT. Je pense que cela provient d'un débordement de pile qu'il me faudrait vider après l'affichage de centaines de petites bitmaps à l'écran.
Si vous connaissez le moyen de vider la pile de la mémoire, aidez moi!

Merci... .
vendredi 21 février 2003 à 12:37:11 | Re : Vider la pile

BruNews

Administrateur CodeS-SourceS


Salut,
difficile de repondre sans avoir un exemple de source qui pose probleme.
La "pile" a plusieurs significations.
Celle de base est indexee par registre ESP. Faudrait voir valeur esp quand plante.
Pour les bitmap si tu les degages correctement juste apres emploi ne doit pas poser probleme.
Tu peux faire sauter la "pile d'appels" si tes timer sont mal geres. S'ils envoient un simple WM_TIMER sur un hwnd Windows assez "intelligent" pour ne pas les empiler.
Si une func callback TimerProc qui poste un message perso alors empilage et risque probleme si mauvaise gestion.
Pour resumer faut analyser un source.
On peut aussi faire un PeekMessage(..., PM_REMOVE) pour depiler dans une boucle longue. Faut voir quand et pour quel message convient.
ciao...

-------------------------------
Réponse au message :
-------------------------------

> Bonjoir à tous!
>
> J'ai une question qui m'est toujours et depuis longtemps sans réponse. Je programme sous Visual C/C++ 6.0 et certain de mes programmes ont des problèmes de compatibilité (généralement tout ce qui est jeux utilisant un timer) avec les systèmes de noyau de type NT. Je pense que cela provient d'un débordement de pile qu'il me faudrait vider après l'affichage de centaines de petites bitmaps à l'écran.
> Si vous connaissez le moyen de vider la pile de la mémoire, aidez moi!
>
> Merci... .
vendredi 21 février 2003 à 13:53:05 | Re : Vider la pile

Tyozhebes

Merci de m'avoir répondu!

Mon problème de pile ne vient pas de bitmaps non dégagées. Je pense avoir fait le nécessaire pour cela et mon programme tourne parfaitement sur Win98 ou WinMe. Le PeekMessage(..., PM_REMOVE) semble être une solution possible et j'y regarderais quand je rentrerais chez moi. Pour les sources du jeu, je veux bien les fournir sur ce site. Il s'agit du Serpent III... tadaaa! Il est (sans m'vanter bien qu'ça m'fasse plaisir de le dire) très sympa, plutôt joli et avec plein de sons à la con. En tout cas tous ceux qui y ont joué l'ont bien aimé. Le principe de l'affichage est un tableau d'entier représentant le numero d'un bitmap. La scrutation du tableau se fait par un système de boucles simple mais sous XP, elle est beaucoup trop rapide au démarrage puis devient de plus en plus lente pour finir sur un joli plantage. Je ne sais pas si je pourrais "transporter" tout le code avec toutes les bitmaps et le son mais j'essairais d'amener les .cpp et .h.

@+ j'espère!


-------------------------------
Réponse au message :
-------------------------------

>
>
> Salut,
> difficile de repondre sans avoir un exemple de source qui pose probleme.
> La "pile" a plusieurs significations.
> Celle de base est indexee par registre ESP. Faudrait voir valeur esp quand plante.
> Pour les bitmap si tu les degages correctement juste apres emploi ne doit pas poser probleme.
> Tu peux faire sauter la "pile d'appels" si tes timer sont mal geres. S'ils envoient un simple WM_TIMER sur un hwnd Windows assez "intelligent" pour ne pas les empiler.
> Si une func callback TimerProc qui poste un message perso alors empilage et risque probleme si mauvaise gestion.
> Pour resumer faut analyser un source.
> On peut aussi faire un PeekMessage(..., PM_REMOVE) pour depiler dans une boucle longue. Faut voir quand et pour quel message convient.
> ciao...
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjoir à tous!
> >
> > J'ai une question qui m'est toujours et depuis longtemps sans réponse. Je programme sous Visual C/C++ 6.0 et certain de mes programmes ont des problèmes de compatibilité (généralement tout ce qui est jeux utilisant un timer) avec les systèmes de noyau de type NT. Je pense que cela provient d'un débordement de pile qu'il me faudrait vider après l'affichage de centaines de petites bitmaps à l'écran.
> > Si vous connaissez le moyen de vider la pile de la mémoire, aidez moi!
> >
> > Merci... .
>
vendredi 21 février 2003 à 14:22:26 | Re : Vider la pile

BruNews

Administrateur CodeS-SourceS
je suis pour l'enseignement mais en general CONTRE l'open source sur un produit complet. Donc je ne te demande pas tes sources, juste pour dire que difficile de repondre sans analyse.
Tu ne peux pas faire un genre fichier log ?
un simple pour commencer, chaque entree dans func doit ecrire:
valESP en hexa 8 char, 2 espaces et nom func \r\n
ainsi tu pourrais tracer ton prog. Au plantage tu ouvres fichier avec noteped et tu vois ou s'est arrete. C'est un exemple, suffit ensuite de modifier enrgistrement du log pour voir autres registres.
Si prob pour faire ce genre de truc, tu mets un message par ce site avec un mail ou te joindre et je te ferai cela en prive.
Je pars a l'hosto mais retour prevu vers 18h30.
ciao...

-------------------------------
Réponse au message :
-------------------------------

> Merci de m'avoir répondu!
>
> Mon problème de pile ne vient pas de bitmaps non dégagées. Je pense avoir fait le nécessaire pour cela et mon programme tourne parfaitement sur Win98 ou WinMe. Le PeekMessage(..., PM_REMOVE) semble être une solution possible et j'y regarderais quand je rentrerais chez moi. Pour les sources du jeu, je veux bien les fournir sur ce site. Il s'agit du Serpent III... tadaaa! Il est (sans m'vanter bien qu'ça m'fasse plaisir de le dire) très sympa, plutôt joli et avec plein de sons à la con. En tout cas tous ceux qui y ont joué l'ont bien aimé. Le principe de l'affichage est un tableau d'entier représentant le numero d'un bitmap. La scrutation du tableau se fait par un système de boucles simple mais sous XP, elle est beaucoup trop rapide au démarrage puis devient de plus en plus lente pour finir sur un joli plantage. Je ne sais pas si je pourrais "transporter" tout le code avec toutes les bitmaps et le son mais j'essairais d'amener les .cpp et .h.
>
> @+ j'espère!
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> >
> > Salut,
> > difficile de repondre sans avoir un exemple de source qui pose probleme.
> > La "pile" a plusieurs significations.
> > Celle de base est indexee par registre ESP. Faudrait voir valeur esp quand plante.
> > Pour les bitmap si tu les degages correctement juste apres emploi ne doit pas poser probleme.
> > Tu peux faire sauter la "pile d'appels" si tes timer sont mal geres. S'ils envoient un simple WM_TIMER sur un hwnd Windows assez "intelligent" pour ne pas les empiler.
> > Si une func callback TimerProc qui poste un message perso alors empilage et risque probleme si mauvaise gestion.
> > Pour resumer faut analyser un source.
> > On peut aussi faire un PeekMessage(..., PM_REMOVE) pour depiler dans une boucle longue. Faut voir quand et pour quel message convient.
> > ciao...
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjoir à tous!
> > >
> > > J'ai une question qui m'est toujours et depuis longtemps sans réponse. Je programme sous Visual C/C++ 6.0 et certain de mes programmes ont des problèmes de compatibilité (généralement tout ce qui est jeux utilisant un timer) avec les systèmes de noyau de type NT. Je pense que cela provient d'un débordement de pile qu'il me faudrait vider après l'affichage de centaines de petites bitmaps à l'écran.
> > > Si vous connaissez le moyen de vider la pile de la mémoire, aidez moi!
> > >
> > > Merci... .
> >
>
vendredi 21 février 2003 à 17:32:58 | Re : Vider la pile

Kaid


Es-tu sûr de bien libérer tous les bitmaps et autres objets GDI que tu crées ? Si tu programmes en Win32, il faut détruire tous les objets GDI quand tu n'en n'a plus besoin à la main avec la fonction DeleteObject().

Windows NT est moins tolérant que Win9X là dessus. Pour vérifier si tu détruis bien les objets, va dans ton task manager NT, sélectionnes l'onglet "Process" puis Menu "View / Select Column" et tu ajoutes "GDI Objects". Surveilles ensuite le compteur et s'il grimpe continuellement, c'est que tu n'as pas bien détruit les objets.
Attention, cette manip nécessite au mimimum W2K, sous NT tu peux la faire mais la colonne "GDI Objects" ne s'affiche pas.

Kaid - kaid.fr.st


-------------------------------
Réponse au message :
-------------------------------

>
>
> Salut,
> difficile de repondre sans avoir un exemple de source qui pose probleme.
> La "pile" a plusieurs significations.
> Celle de base est indexee par registre ESP. Faudrait voir valeur esp quand plante.
> Pour les bitmap si tu les degages correctement juste apres emploi ne doit pas poser probleme.
> Tu peux faire sauter la "pile d'appels" si tes timer sont mal geres. S'ils envoient un simple WM_TIMER sur un hwnd Windows assez "intelligent" pour ne pas les empiler.
> Si une func callback TimerProc qui poste un message perso alors empilage et risque probleme si mauvaise gestion.
> Pour resumer faut analyser un source.
> On peut aussi faire un PeekMessage(..., PM_REMOVE) pour depiler dans une boucle longue. Faut voir quand et pour quel message convient.
> ciao...
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjoir à tous!
> >
> > J'ai une question qui m'est toujours et depuis longtemps sans réponse. Je programme sous Visual C/C++ 6.0 et certain de mes programmes ont des problèmes de compatibilité (généralement tout ce qui est jeux utilisant un timer) avec les systèmes de noyau de type NT. Je pense que cela provient d'un débordement de pile qu'il me faudrait vider après l'affichage de centaines de petites bitmaps à l'écran.
> > Si vous connaissez le moyen de vider la pile de la mémoire, aidez moi!
> >
> > Merci... .
>
samedi 22 février 2003 à 11:34:04 | Re : Vider la pile

vieuxLion

Technique intéressante Kaid ... je vais l'essayer.
Mais si VRAIMENT Tyozhebes as besoin d'une pile plus importante, il est toujours possible de la préciser au linkeur
Sous VC++ Project/Settings/Link/output/Reserve....
Chez un gros client, la pile nécessaire est de 1GO !


-------------------------------
Réponse au message :
-------------------------------

>
> Es-tu sûr de bien libérer tous les bitmaps et autres objets GDI que tu crées ? Si tu programmes en Win32, il faut détruire tous les objets GDI quand tu n'en n'a plus besoin à la main avec la fonction DeleteObject().
>
> Windows NT est moins tolérant que Win9X là dessus. Pour vérifier si tu détruis bien les objets, va dans ton task manager NT, sélectionnes l'onglet "Process" puis Menu "View / Select Column" et tu ajoutes "GDI Objects". Surveilles ensuite le compteur et s'il grimpe continuellement, c'est que tu n'as pas bien détruit les objets.
> Attention, cette manip nécessite au mimimum W2K, sous NT tu peux la faire mais la colonne "GDI Objects" ne s'affiche pas.
>
> Kaid - kaid.fr.st
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> >
> > Salut,
> > difficile de repondre sans avoir un exemple de source qui pose probleme.
> > La "pile" a plusieurs significations.
> > Celle de base est indexee par registre ESP. Faudrait voir valeur esp quand plante.
> > Pour les bitmap si tu les degages correctement juste apres emploi ne doit pas poser probleme.
> > Tu peux faire sauter la "pile d'appels" si tes timer sont mal geres. S'ils envoient un simple WM_TIMER sur un hwnd Windows assez "intelligent" pour ne pas les empiler.
> > Si une func callback TimerProc qui poste un message perso alors empilage et risque probleme si mauvaise gestion.
> > Pour resumer faut analyser un source.
> > On peut aussi faire un PeekMessage(..., PM_REMOVE) pour depiler dans une boucle longue. Faut voir quand et pour quel message convient.
> > ciao...
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonjoir à tous!
> > >
> > > J'ai une question qui m'est toujours et depuis longtemps sans réponse. Je programme sous Visual C/C++ 6.0 et certain de mes programmes ont des problèmes de compatibilité (généralement tout ce qui est jeux utilisant un timer) avec les systèmes de noyau de type NT. Je pense que cela provient d'un débordement de pile qu'il me faudrait vider après l'affichage de centaines de petites bitmaps à l'écran.
> > > Si vous connaissez le moyen de vider la pile de la mémoire, aidez moi!
> > >
> > > Merci... .
> >
>


Cette discussion est classée dans : vider, pile


Répondre à ce message

Sujets en rapport avec ce message

[VC++] Comment vider une edit box? [ par ndj55 ] Salut!Je voudrais savoir comment je peux faire pour vider une edit box?Existe-t-il un message particulier???Merci d'avance! pile memoire avec structure de pointeur [ par Nonobis ] slttjs avec ma calculatrice des p'titsproblemes ...ils faut que je recupere les valeurs saisies que cela soit nombre ou signe et les stock dans la pil Vider une listbox [ par Athanor ] [C++] Optimisation de pile [ par guiguikun ] Vider la corbeille [ par CyberP ] Comment peut-on vider la corbeille de windows en C++ ?CyberP,Celui qui dit que toute question a une réponse Vider la corbeille fait planter le prog [ par CyberP ] Voici le code que j'ai mis dans mon programme :HWND main = identificateur de la fenêtre"c:\\" = dossier racine (mais de quoi ???)1 = je ne sais pas qu Vider le RECV Buffer d'une Socket ? [ par Kikyo ] Oauip c'est possible de vider le Buffer qui recoit les données, d'une Socket ? Vider EditBox [ par neofred ] Bonjour à tousJ'ai un programme qui lorsqu'on clique sur un bouton prends la valeur dans une EditBox et l'écrit dans un fichier. J'aimerais savoir co vider un fichier texte [ par sampq ] Existe t il une procedure premttant de rendre un fichier texte completement vide (suppression de tous les elements) ?merci Pile des sockets [ par darsh99 ] Bonjour,je suis toujours sur mon client serveur et j'ai un petit problème de paquets :J'envoie des paquets de taille variable mais avec une taille max


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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 : 0,686 sec (3)

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