Dynamisches Array lässt sich nicht verändern



  • Der Titel ist vielleicht bisschen schlecht gewählt aber aber was besseres ist mir auch nicht eingefallen.
    Also folgendes Problem ich hab eine Schleife, in der jedes mal eine neue Zeile eingelesen aus einer Datei eingelesen wird (puffer), da puffer ja ein String ist ist wird anschließend nach dem ende gesucht (\0), das wird auch immer richtig erkannt. Doch wenn ich dann ein neues dynamisches array einrichten will (array1), behält es immer die gleiche grösse wie beim ersten mal erstellen, obwohl am ende der Schleife den Speicher für das Array immer wieder freigebe.

    #define ZEILENLAENGE 20
    
    int position;
    char puffer[ZEILENLAENGE];
    char *array1;
    
    while(/*irgendwas */){
    position = strcspn( puffer, "\0 " ); //  Char-Array/String nach \0 dursuchen
    
    // bis hier läufts noch, position ist bei jedem durchlauf anders
    
    array1 = (char *)malloc(position*sizeof(char));
    
    // mach dies und das 
    
    free(array1);
    }
    

    Wenn ich jetzt bei jedem Schleifendurchgang mit sizeof(array1) die grösse abfrage bleibt die grösse immer gleich, wie beim ersten mal.
    Kann mir einer sagen wo der Fehler liegt?



  • ...kann es sein dass wenn ich sizeof(array1) benutze immer als ergebnis bekomme ganz einfach deshalb weil er immer nur die grösse des Zeigers wiedergibt und nicht die des arrays? 😕



  • Das oben war ich übrigens, war nicht eingeloggt...

    ... immer 4 als Ergebnis bekomme... sollte das übrigens heissen



  • Tyrone schrieb:

    ...kann es sein dass wenn ich sizeof(array1) benutze immer als ergebnis bekomme ganz einfach deshalb weil er immer nur die grösse des Zeigers wiedergibt und nicht die des arrays? 😕

    So ist es. Du bekommst immer nur die Größe des Pointers zurück.


Anmelden zum Antworten