Posted By: Widi
Struct und sys_malloc - 03/12/11 01:01
Hallo ihr Struct - Heroes,
Habe ein Problem in meinem 2D Bomberman. Das Game stürzt immer wieder ab, weil ein normaler Pointer eines Levelstückes ungültig wird (glaube ich nach einigen Testzumindest).
Jedes Tilestück (Panel) im Level hat einen Pointer und irgendwann zufällig wenn ich pan_setbmap oder alpha ändern will ist einer dieser Pointer ungültig.
Was ich mir vorstellen kann, ist dass ich mit sys_malloc etwas falsch mache. Habe 2 Array-Structs in meinem Spiel, einen für Bomben (10 Stück pro Player) und einen für 8 Spieler, in dem auch der Bombenstruct enthalten ist. Hier eine verkürzte version der Structs, mein Spiel enthaltet mehr vars und BOOL`s.
Ist die function INIT_STRUCT so richtig?
Bin ich auch richtig mit der Annahme dass sys_malloc Speicherbereich zur verfügung stellt für die var`s, BOOL`s und Panelpointer? Der Panel wird im Spiel mit pan_create erzeugt, für das Panel selber muss ich ja keinen Speicherbereich bereitstellen?
Möchte nur wissen, ob das hier so richtig ist, damit ich das als Ursache für mein Problem ausschliessen kann. Danke.
Habe ein Problem in meinem 2D Bomberman. Das Game stürzt immer wieder ab, weil ein normaler Pointer eines Levelstückes ungültig wird (glaube ich nach einigen Testzumindest).
Jedes Tilestück (Panel) im Level hat einen Pointer und irgendwann zufällig wenn ich pan_setbmap oder alpha ändern will ist einer dieser Pointer ungültig.
Was ich mir vorstellen kann, ist dass ich mit sys_malloc etwas falsch mache. Habe 2 Array-Structs in meinem Spiel, einen für Bomben (10 Stück pro Player) und einen für 8 Spieler, in dem auch der Bombenstruct enthalten ist. Hier eine verkürzte version der Structs, mein Spiel enthaltet mehr vars und BOOL`s.
Code:
#define Anz_spieler 8 #define Anz_bomben 10 // (pro Player) typedef struct { var koor_x_abs; var koor_y_abs; ... var countdown; PANEL* panel; } BOMBE; ///////////////////////////////////////////////////////////////////////////////////////////////////// typedef struct { var koor_x_abs; var koor_y_abs; ... BOOL t1_gedr; BOOL t2_gedr; PANEL* panel; BOMBE Bombe[Anz_bomben]; // <-- ist das so richtig? } PLAYER; PLAYER Player[Anz_spieler]; //*************************************************************************************************// void INIT_STRUCT() { PLAYER *Player = sys_malloc ((sizeof(PLAYER) + (sizeof(BOMBE) * Anz_bomben)) * Anz_spieler);}
Ist die function INIT_STRUCT so richtig?
Bin ich auch richtig mit der Annahme dass sys_malloc Speicherbereich zur verfügung stellt für die var`s, BOOL`s und Panelpointer? Der Panel wird im Spiel mit pan_create erzeugt, für das Panel selber muss ich ja keinen Speicherbereich bereitstellen?
Möchte nur wissen, ob das hier so richtig ist, damit ich das als Ursache für mein Problem ausschliessen kann. Danke.