Fatal signal: Segmentation Fault (SDL Parachute Deployed)
-
Hey ich bin ein ziemlicher anfänger was SDL angeht,
und habe bereits ein problem das mich bereits seit tagen nervt:
hier mal ereinfacht den code:int main() { ... SDL_Surface *surface; SDL_Init(SDL_INIT_VIDEO); surface = SDL_SetVideoMode(640,480,16, SDL_DOUBLEBUF | SDL_HWSURFACE); ... }WEnn ich jetzt etwas auf das surface zechnen will geht das auch ohne probleme,
ich habe jedoch verscuht den obigen code in eine funktion auszulagern und surface als parameter übergeben zu lassen.int init(SDL_Surface *surface) { ... SDL_Init(SDL_INIT_VIDEO); surface = SDL_SetVideoMode(640,480,16, SDL_DOUBLEBUF | SDL_HWSURFACE); ... } int main { ... SDL_Surface *surface; init(surface); ... }Wenn ich jetzt etwas auf das surface zeichenn will bekomme ich folgenden errror
Fatal signal: Segmentation Fault (SDL Parachute Deployed)Woran kann das liegen?
Ist es etwa nicht erlaubt SDL in einer funktion zu initaliesieren,
oder verletze ich da den lebenszyklus von surface oder sowas?PS: Wie gesagt der obige code ist stark vereinfacht, aber ihc meine das hier mein problem liegt, sicher bin ich mir jedoch nicht, da ich mir keinen reim auf dieses verhalten machen kann
-
SDL_Surface *init() { SDL_Surface *surface SDL_Init(SDL_INIT_VIDEO); surface=SDL_SetVideoMode(x,y,bpp,flags); return surface; } int main() { SDL_Surface *screen; screen=init(); }
-
Dein Fehler liegt darin, dass du annimmst, die Änderung des Pointers in der init Funktion würde sich auch auf surface in main auswirken, was sie aber nicht tut, da es zwei verschiedene Objekte sind trotz gleichen Namen.
Vgl. CopyByValue vs. CopyByReference
-
Ohh...
Das hatte ich nicht beachtet.
DAnke, jetzt dürfte alles klar sein