robul21 Temat założony przez niniejszego użytkownika  | 
[SDL] Rosnąca pamięć. » 2013-05-01 15:37:30 Witam Mam problem z funkcją poniżej, cały czas rośnie mi pamięć i to w szybkim tempie, nie mogę znaleźć w którym miejscu. Na razie ma być wyświetlany tylko jakby stoper, ale po niecałych dwóch minutach, brakuje już pamięci. #include "chemia.h" void chema( SDL_Surface * ekran ) {     bool wyjscie = false, wystartowac = false;     SDL_Event zdarzenie;     int mychaX, mychaY;     SDL_Rect pole[ 5 ], naCzas[ 3 ];     uzupelnijWspolrzedneCH( pole, naCzas );     SDL_Surface * plansza = SDL_LoadBMP( "chemia.bmp" );     SDL_Surface * start = SDL_LoadBMP( "start_chemia.bmp" );     SDL_Surface * Pczas = NULL;     SDL_Color kolor;      kolor.r = 0;     kolor.g = 0;     kolor.b = 0;     TTF_Font * font = TTF_OpenFont( "banana.ttf", 60 );     unsigned long long int * wczas, * wtemp, * wmin, * wsekDz, * wsek, czas = 0, temp = 0, min = 0, sekDz = 0, sek = 0;     wczas = & czas;     wtemp = & temp;     wmin = & min;     wsekDz = & sekDz;     wsek = & sek;     string Sczas;      ostringstream Oczas;                     SDL_BlitSurface( plansza, NULL, ekran, NULL );     SDL_BlitSurface( start, NULL, ekran, & pole[ 4 ] );     SDL_Flip( ekran );                         while( !wyjscie )      {         while( SDL_PollEvent( & zdarzenie ) )          {             if( zdarzenie.type == SDL_QUIT )             {                 wyjscie = true;              }             if( zdarzenie.type == SDL_MOUSEMOTION )             {                  mychaX = zdarzenie.motion.x;                 mychaY = zdarzenie.motion.y;                                               }             if( zdarzenie.type == SDL_MOUSEBUTTONDOWN )             {                  if( zdarzenie.button.button == SDL_BUTTON_LEFT )                 {                     if( mychaX >= pole[ 4 ].x && mychaX <= pole[ 4 ].x + pole[ 4 ].w                     && mychaY >= pole[ 4 ].y && mychaY <= pole[ 4 ].y + pole[ 4 ].h )                     {                         if( wystartowac == false ) { * wczas = clock(); }                         wystartowac = true;                         SDL_Flip( ekran );                                              }                                          if( wystartowac )                     {                         SDL_BlitSurface( plansza, & pole[ 4 ], ekran, & pole[ 4 ] );                         SDL_Flip( ekran );                                                                       }                 }                                                                }         }         if( wystartowac == true )         {             SDL_FreeSurface( ekran );             SDL_BlitSurface( plansza, NULL, ekran, NULL );             wyswietlCzas( wczas, wtemp, wmin, wsekDz, wsek, ekran, naCzas, Sczas, Oczas, plansza, kolor, font, Pczas );         }     }     SDL_FreeSurface( plansza );     SDL_FreeSurface( start );     return; }
  void wyswietlCzas( unsigned long long int * czas, unsigned long long int * temp, unsigned long long int * min, unsigned long long int * sekDz, unsigned long long int * sek, SDL_Surface * ekran, SDL_Rect tutaj[ 3 ], string Sczas, ostringstream & Oczas, SDL_Surface * plansza, SDL_Color kolor, TTF_Font * font, SDL_Surface * Pczas ) {     * temp = 0, * min = 0, * sekDz = 0, * sek = 0;     SDL_BlitSurface( plansza, & tutaj[ 0 ], ekran, & tutaj[ 0 ] );     SDL_BlitSurface( plansza, & tutaj[ 1 ], ekran, & tutaj[ 1 ] );     SDL_BlitSurface( plansza, & tutaj[ 2 ], ekran, & tutaj[ 2 ] );               * temp = clock() - * czas;          Oczas.str( "" );     * min = * temp / 60000;     Oczas << * min;     Sczas = Oczas.str();     Pczas = TTF_RenderText_Solid( font, Sczas.c_str(), kolor );     SDL_BlitSurface( Pczas, NULL, ekran, & tutaj[ 0 ] );          Oczas.str( "" );     * sekDz =((( * temp / 1000 ) -* min * 60 ) / 10 );     Oczas << * sekDz;     Sczas = Oczas.str();     Pczas = TTF_RenderText_Solid( font, Sczas.c_str(), kolor );     SDL_BlitSurface( Pczas, NULL, ekran, & tutaj[ 1 ] );          Oczas.str( "" );     * sek =( * temp / 1000 ) % 10;     Oczas << * sek;     Sczas = Oczas.str();     Pczas = TTF_RenderText_Solid( font, Sczas.c_str(), kolor );     SDL_BlitSurface( Pczas, NULL, ekran, & tutaj[ 2 ] );          SDL_FreeSurface( Pczas );               SDL_Flip( ekran );     return;      }  |