c++ - Losing pointer values -


i'm getting same log every time run program.

there snippet main.cpp, every variable in local scope:

edit: find @ bottom. 

i made these functions start game, run menu loop, , close graphics, , give false value gamenoerror if goes wrong. last function gives me following log message:

"no present window or/and renderer close! sdl possibly not started, closed or wrong pointers used!"

(note, wrote log messages myself, because want use logging to.)

so, means loose somewhere value of pointers, can't find out why?

there close function too:

bool closegraphics(file* logfile, sdl_window* gamewindow, sdl_renderer* gamerenderer) {     bool success = false;      if (gamewindow == null or gamerenderer == null)     {         dologging(logfile, "no present window or/and renderer close! sdl possibly not started, closed or wrong pointers used!");         success = false;     }     else     {         sdl_destroyrenderer(gamerenderer);         gamerenderer = null;         sdl_destroywindow(gamewindow);         gamewindow = null;          dologging(logfile, "renderer , window destroyed successfully!");     }      ttf_quit();     img_quit();     sdl_quit();      return success; } 

i use pointers rendering in menu loop (if need paste too!) , pointers used in scope.

so problem?

edit: found something: menu loop looses pointers too! sdl starts , made not first. don't know problem.

files project:

main.cpp:

#include <stdio.h> #include <string>  #include <sdl.h>  #include "initialization/utility.hpp" #include "initialization/init_closegraphics.hpp" #include "menuloop.hpp"  int main(int argc, char* argv[]) {     bool gamenoerror = true;     sdl_renderer* gamerenderer = null;     sdl_window* gamewindow = null;      file* logfile = fopen("errorlog.txt", "w");     dologging(logfile, "game started successfully!");      gamenoerror = initgraphics(logfile, gamewindow, gamerenderer, "this title!", 800, 600);      if (gamenoerror) gamenoerror = domenuloop(logfile, gamewindow, gamerenderer, 800, 600);      if (gamenoerror)     {         gamenoerror = closegraphics(logfile, gamewindow, gamerenderer);     }     else     {         closegraphics(logfile, gamewindow, gamerenderer);     }      if (!gamenoerror)     {         dologging(logfile, "game stopped error/exception/problem!");     }     else     {         dologging(logfile, "game stopped successfully!");     }      return 0; } 

utility.hpp contains logging function

init_close.cpp: (it has it's header)

#include "init_closegraphics.hpp"  bool initgraphics(file* logfile,                   sdl_window* gamewindow,                   sdl_renderer* gamerenderer,                   const char* gametitle,                   int gamewindowwidth,                   int gamewindowheight) {     bool success = true;     if (gamewindowwidth <= 0 or gamewindowheight <= 0)     {         dologging(logfile, "get less or equal 0 window dimensions @ sdl initialization!");         success = false;     }     else     {         if(sdl_init(sdl_init_video) < 0)         {             dologging(logfile, "failed initialize sdl!");             dologging(logfile, sdl_geterror());             success = false;         }         else         {             gamewindow = sdl_createwindow(gametitle,                                           sdl_windowpos_undefined,                                           sdl_windowpos_undefined,                                           gamewindowwidth,                                           gamewindowheight,                                           sdl_window_shown);             if (gamewindow == null)             {                 dologging(logfile, "failed create window!");                 dologging(logfile, sdl_geterror());                 success = false;             }             else             {                 gamerenderer = sdl_createrenderer(gamewindow, -1, sdl_renderer_accelerated | sdl_renderer_presentvsync);                 if (gamerenderer == null)                 {                     dologging(logfile, "failed create renderer!");                     dologging(logfile, sdl_geterror());                     success = false;                 }                 else                 {                     sdl_setrenderdrawcolor(gamerenderer, 0xff, 0xff, 0xff, 0xff);                      int img_flag = img_init_png;                     if (!(img_init(img_flag) & img_flag))                     {                         dologging(logfile, "failed initialize sdl_image!");                         dologging(logfile, img_geterror());                         success = false;                     }                      if (ttf_init() == -1)                     {                         dologging(logfile, "failed initialize sdl_ttf!");                         dologging(logfile, ttf_geterror());                         success = false;                     }                 }             }         }     }     return success; }  bool closegraphics(file* logfile, sdl_window* gamewindow, sdl_renderer* gamerenderer) {     bool success = false;      if (gamewindow == null or gamerenderer == null)     {         dologging(logfile, "no present window or/and renderer close! sdl possibly not started, closed or wrong pointers used!");         success = false;     }     else     {         sdl_destroyrenderer(gamerenderer);         gamerenderer = null;         sdl_destroywindow(gamewindow);         gamewindow = null;          dologging(logfile, "renderer , window destroyed successfully!");     }      ttf_quit();     img_quit();     sdl_quit();      return success; } 

you passing pointer variables initgraphics value, call site not see changes them.

if want variables in main updated when call initgraphics, take them reference:

bool initgraphics(file* logfile,                   sdl_window*& gamewindow, //                           ^                   sdl_renderer*& gamerenderer, //                             ^                   const char* gametitle,                   int gamewindowwidth,                   int gamewindowheight) 

Comments

Popular posts from this blog

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

linux - disk space limitation when creating war file -

How to provide Authorization & Authentication using Asp.net, C#? -