Calloc initialisert Werte nicht?



  • Hi,
    ich stehe grade ziemlich auf dem Schlauch und frage mich warum folgender Codeteil nicht funktioniert:

    /* Speicherbereich für base_vars reservieren*/
    base_vars = calloc(counter, sizeof(unsigned int));
    if ( ... == NULL) ....
    
    /*Danach alloziere ich mir speicherbereich für ein **double*/
    matrix = malloc(rows * sizeof(double *));
    
    if ( .. == NULL) ....
    
    for (i = 0; i < rows; ++i) 
       matrix[i] = malloc(cols * sizeof(double));
      if ( .. == NULL) ....
    
    /* Anschließende Ausgabe von Base_Vars führt zu teilweise(!) zufälligen Werten..*/ 
    for (i = 0; i < counter; ++i) 
     printf(....base_vars....);
    

    Wenn ich allerdings direkt nach dem calloc ausgebe, scheint alles korrekt zu sein. Deswegen denke ich mal das mein malloc für die Matrix irgendwas bei Base_vars kaputt macht 😞

    Kann da jemand helfen? Bin ziemlich am verzweifeln.


  • Mod

    Dann wird da wohl ein Fehler drin sein. Bitte vollständiges Minimalbeispiel, siehe Link in meiner Signatur.

    Es ist übrigens möglich, üblich und deutlich effizienter, Matrizen an einem Stück im Speicher zu halten und die Indizes für den Zugriff zu berechnen, anstatt durch eine (unnötige) doppelte Indirektion alles wild zu verteilen.


Anmelden zum Antworten