[C/C++] Calloc - Dynamisches Array

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Calyx, 12. Januar 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 12. Januar 2010
    Calloc - Dynamisches Array

    Nabend,

    ich muss für eine Projektarbeit ein Programm in C schreiben, das Datensätze über Personen (Name, Geburtstag, usw) einliest und in einem dynamischen Array speichert.

    Die Datensätze will ich in Strukturen zusammenfassen und mit ner Schleife dann zur jeweiligen Person einlesen.

    Allerdings sollen wir mit calloc genau den benötigten Speicher reservieren und ich bin mir grad nicht so sicher wie ich das machen kann.

    Prototyp is ja:
    Code:
    void *calloc(size_t anzahl, size_t groesse);
    
    Hab in den Strukturen aber gemischte Datentypen, muss ich für jeden Typ/jede Variable einzeln reservieren, kann ich das einfach aufaddieren innerhalb von calloc oder evtl auch einfach die Struktur angeben?
     
  2. 12. Januar 2010
    AW: Calloc - Dynamisches Array

    Mittels sizeof die Datengröße deiner Struktur ermitteln und übergeben, jedoch musst du aufpassen das Pointer innerhalb der Struktur auch allokiert werden müssen (rekursiv) wie zum Beispiel Stirngketten a la PChar ... Das ganze dann auch in umgekehrter reihenfolge wieder freigeben.

    Mfg Rushh0ur
     
  3. 12. Januar 2010
    AW: Calloc - Dynamisches Array

    Danke für deine Antwort

    Das heißt dann also, dass mir zb

    Code:
    PtrArray = (char**)calloc(blubb, sizeof(char*));
    Speicher in der Größe der Werte des Inhalts der Zeigers + für die Zeiger selbst reserviert, also PtrArray ein Zeiger auf die Werte ist, auf die die Zeiger im allokierten Speicher zeigen? Oder versteh ich das falsch... bin noch nicht so erfahren damit

    Und würde es reichen einfach das PtrArray freizugeben, oder muss da noch mehr gemacht werden?
     
  4. 13. Januar 2010
    AW: Calloc - Dynamisches Array

    calloc reserviert einfach Speicher für anzahl Einträge, wobei jeder Eintrag groesse Bytes beträgt:

    Code:
    struct person {
    char vorname[20];
    char nachname[20];
    /* etc.. */ 
    };
    
    struct person *personen_array;
    
    personen_array = calloc(5, sizeof(struct person));
    /* personen_array hat nun 5 einträge */
    
    free(personen_array);
     
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.