Probleme beim Initialisieren

thomy800

Erfahrenes Mitglied
Hi,

Bin neu in C. Habe das hier geschrieben:

C:
typedef struct Objekt_t{
    double ypos;
    int xpos;
    int color;
    int height;
    int width;
    int* net;
    int id;
} Objekt;
Das gibt nen Laufzeitfehler:
C:
Objekt* init(int xlen,  int width, int height, int id){
      Objekt* o=(Objekt*)malloc(sizeof(Objekt));  
      o->ypos = 0;
      o->color=getRand(1,5);
      o->xpos=getRand(0,xlen-o->width+1);
      o->height=height;
      o->width=width;
      o->net=(int*)malloc(o->height*o->width*sizeof(int));
      o->net[o->height*o->width];
      clearData(o->net, o->width, o->height);
      o->id=id;
      return o;
}
Objekt* createQuadrat(int xlen){    
      Objekt* o=init(xlen,2,3,0);
      o->net[0]=o->color;
      o->net[1]=o->color;
      o->net[2]=o->color;
      o->net[4]=o->color;
      return o;
}

So hier allerdings funktioniert es:
C:
Objekt* createQuadrat(int xlen){
      Objekt* o=(Objekt*)malloc(sizeof(Objekt));  
      o->ypos = 0;
      o->color=getRand(1,5);
      o->xpos=getRand(0,xlen-o->width+1);
      o->height=2;
      o->width=3;
      o->net=(int*)malloc(o->height*o->width*sizeof(int));
      o->net[o->height*o->width];
      clearData(o->net, o->width, o->height);
      o->id=0;
      o->net[0]=o->color;
      o->net[1]=o->color;
      o->net[2]=o->color;
      o->net[4]=o->color;
      return o;
}
Ich verstehe nur nicht ganz warum? Da ich nicht nur Quadrate erstellen will, sondern auch andere Muster, wäre die init-Funktion eine Erleichterung...

Grüße
Thomy
 
Hallo thomy800,

was für ein Laufzeitfehler kommt denn? Eine Speicherzugriffverletzung?

Und wie ist die Funktion clearData definiert?
 
Zuletzt bearbeitet:
Sry, ist mal wieder gut getimed, kaum hatte ich es gepostet, hatt eich den Fehler entdeckt^^.
Problem war, dass ich width verwendet hatte und danach erst initialisiert hatte...
Trotzdem danke ;)
 
Zurück