begin process at 2012 05 29 12:05:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

Fuites de mémoire !


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

Fuites de mémoire !

mercredi 28 juin 2006 à 21:14:20 | Fuites de mémoire !

Darksheep

Bonjour ,
Je commence a programmer des jeux , mais malheureusement j'ai manifestement quelques problèmes :
quand je le lance deux ou trois fois , cela passe encore , mais plusieurs fois (une dizaine) mon pc commence à buguer  sévèrement et m'oblige un redémarrage.Pourtant, je détruit bien toutes mes ressources à la fin.
Pourriez vous me dire comment éviter ce genre de problèmes ?
Je post un des codes en question (il n'est pas fini, fait avec allegro , pas de datafile, timers et son)


#include <allegro.h>
#define Largeur_Ecran  640
#define Hauteur_Ecran  480
#define Tilesize 33
#define grid_w  10
#define grid_h  10

BITMAP *buffer,*grid;
BITMAP *tiles ;
BITMAP *background;
int init();
void deinit();
void draw_map();
void draw_player() ;
void draw_font();

int map[grid_h][grid_w]={
0,0,0,0,0,0,0,0,0,0,
0,3,6,4,6,6,6,6,4,0,
0,7,0,8,0,9,0,0,8,0,
0,7,0,8,5,5,5,5,2,0,
0,1,5,2,0,0,8,9,8,0,
0,7,0,8,0,9,8,0,8,0,
0,1,5,2,5,5,2,0,8,0,
0,7,0,0,9,0,8,0,8,0,
0,1,5,5,5,5,2,5,2,0,
0,0,0,0,0,0,0,0,0,0,
 };
 
  void draw_all();

int main(int argc, char *argv[])
{
if(init()<0) return 0;
bool done = false ;

    while(!done)//If the user hits escape, quit the program
   { 
       clear(buffer);
       draw_all();
      if(key[KEY_ESC]){done = true ; }
     
   }
    deinit();
    return 0; // Exit with no errors
}

END_OF_MAIN()

int init()
 {
    allegro_init();
    install_keyboard();
        set_color_depth(16);
    set_gfx_mode(GFX_AUTODETECT_WINDOWED, Largeur_Ecran,Hauteur_Ecran,0,0);

    buffer = create_bitmap(Largeur_Ecran,Hauteur_Ecran);
  
    tiles =load_bitmap("tankbrigade.bmp",NULL);
    if(!tiles){return 0;}
    background =load_bitmap("green016.bmp",NULL);
    if(!background){return 0;}
     return 0;
 }

void deinit()
 {
  destroy_bitmap(buffer);
   destroy_bitmap(tiles);
   destroy_bitmap(grid);
 }


void draw_map()
{
  grid = create_bitmap(32*10,32*10);
  int i,j;
     for(i=0;i<10;i++)
      {
        for(j=0;j<10;j++)
         {
         
          if(map[j][i]==0) { blit(tiles,grid,(11*33)-2,2*33,i*32,j*32,32,32);}
          if(map[j][i]==1) { blit(tiles,grid,1*33,6*33,i*32,j*32,32,32);}
          if(map[j][i]==2) { blit(tiles,grid,2*33,6*33,i*32,j*32,32,32);}
          if(map[j][i]==3) { blit(tiles,grid,3*33,6*33,i*32,j*32,32,32);}
          if(map[j][i]==4) { blit(tiles,grid,4*33,6*33,i*32,j*32,32,32);}
          if(map[j][i]==5) { blit(tiles,grid,5*33,6*33,i*32,j*32,32,32);}
          if(map[j][i]==6) { blit(tiles,grid,6*33,6*33,i*32,j*32,32,32);}
          if(map[j][i]==7) { blit(tiles,grid,7*33,6*33,i*32,j*32,32,32);}
          if(map[j][i]==8) { blit(tiles,grid,8*33,6*33,i*32,j*32,32,32);}
          if(map[j][i]==9) { blit(tiles,grid,6*33,4*33,i*32,j*32,32,32);}      
          }
      }
    blit(grid,buffer,0,0,35,35,640,480);
}

void draw_player()
 {
  blit(tiles,buffer,Tilesize*15,Tilesize*1,32,32,32,32);
 }
void draw_all()
 {
  draw_font();
  draw_map();
  draw_player();
  blit(buffer,screen,0,0,0,0,Largeur_Ecran,Hauteur_Ecran);
}

void draw_font()
{
 int i,j;
 for(i=0;i<5;i++)   
  blit(background,buffer,0,0,i*96,0,Largeur_Ecran,Hauteur_Ecran);
 }

jeudi 29 juin 2006 à 21:26:06 | Re : Fuites de mémoire !

Kleidp

Salut,

Ce n'est peut etre pas un probleme de fuite mémoire puisqu'une fois fermer, le systeme d'exploitation libère automatiquement toute la mémoire allouée par ton programme. Il y a des fuites seulement pendant l'execution du soft si tu oublis un delete a un new ... (allocation dynamique).

Sinon sur la partie du code que tu as mis, je n'ai rien vu de suspect
vendredi 30 juin 2006 à 17:44:40 | Re : Fuites de mémoire !

Darksheep

Merci XD en fait j'ai retapé entierement le code (ajout de data file ,players , collisions )
et ça marche pour l'instant ^^
Je pense que je le posterai en complet bientôt



Cette discussion est classée dans : draw, grid, map, blit, tiles


Répondre à ce message

Sujets en rapport avec ce message

Comment mettre en commun deux surfaces ? [ par JMGR ] Bonjour,Je dévellope un jeu de stratégie en 2D, je crée des tiles de 10*10 pixels et mon jeu est en 800*600.Donc si je fait comme ça, ça rame énorméme Jeu vidéo C/C++ (simple 2D), help svp [ par cyberlewis ] Slt,J'aimerais bien prog un jeu vidéo en C/C++.J'utilise DevC++Bon en fait c'est assez rapide à expliquer,Disons quelques tiles (16x16), un sprite pr map basic?????? [ par Sfoued2003 ] slt tout le monde,je me demande si je peux faire implémenter un algorithme de Electre1 sur map basic, pour pouvoir l'utiliser aprés sur map info? et ç direct draw [ par Punisher ] PunisherVoila, je doit programmer une appli graphique pour mon projet de bts avec Direct X 8.1, plus precisement avec direct draw, et j'ai un probleme Bouton Owner draw [ par Helau ] Bonjour,Je développe en VC++6 en utilisant les MFC,J'ai créé des check button ownerdraw pour pourvoir changer la police de caractères; Mais en faisant Récupérer un évènement [ par darsh99 ] Bonjour,voilà j'ai créé une classe qui n'est dérivée de rien du tout, est-il possible de lui faire récupérer un évènement ?L'évènement étant généré pa rafraichissement List View Owner Draw [ par TwinSidE ] J'utilise une List View Owner Draw (sans MFC) pour pouvoir afficher des lignes de différentes couleurs. Lorsqu'on clique sur un item les subitem sont Direct draw, bitmaps et .jpg [ par TigreRouge ] SAlut tt le mondeJ'ai besoin d'un petit coup de main concernant directdrawSur pas mal de sites, j'ai trouvé comment on gérait les bitmaps (.bmp) avec Petit Bugg [ par ToToL ] Tout d'abord voici mon code : #include int main() { install_allegro(SYSTEM_AUTODETECT, &errno, atexit);set_color_depth(16);set_gfx_mode(GFX_AUTODETECT


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,515 sec (4)

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