Non-aligned pointer being freed



  • Hallo Leute,

    bin noch neu hier. Habe allerdings das Forum schon durchsucht. Kann allerdings nichts zu meinem Problem finden....

    Ich habe in meinem Code einige Pointer, denen ich mit calloc() Speicher hole. Am Ende meines Programms gebe ich diesen mit free() dann wieder frei. Beim beenden meines Programms kommt allerdings folgender Fehler:

    **my-shell(4116) malloc: *** error for object 0xbffffb1d: Non-aligned pointer being freed
    *** set a breakpoint in malloc_error_break to debug
    **

    Kann einer von euch etwas damit anfangen ?

    Bzw kennt jemand von euch Tools, mit denen man seine Speicherverwaltung prüfen kann?

    Gruß Ingo



  • vielleicht verändert du einen der Zeiger, da steht ja auch "non-aligned pointer". Ohne Code kann man nur wild spekulieren.

    Ingo84 schrieb:

    Bzw kennt jemand von euch Tools, mit denen man seine Speicherverwaltung prüfen kann?

    valgrind ist dafür gut geeignet.



  • Natürlich arbeite ich mit den Pointern. Sonst wären sie ja unnütz 😉

    Mein allozieren des Speichers sieht folgendermaßen aus:
    *result = (char 😉 calloc ( MAX + 1 , sizeof(char ) );

    Zwischendurch gebe ich den Zeiger auch Inhalt. Etwa so:
    pos1 = strstr(result, "$");
    strcpy(temp2, pos2);

    Mein freigeben so:
    free(result);

    Ich denke da habe ich keine Fehler drin...



  • result = (char 😉 calloc ( MAX + 1 , sizeof(char 😉 );

    die zeile ist schonmal falsch. du willst sizeof(char) nicht char* oder aber einen char** wenn du doch sizeof(char*) willst.

    die fehlermeldung sagt, du lieferst free nicht den selben zeiger den malloc/calloc dir gegeben hat.



  • Ingo84 schrieb:

    Natürlich arbeite ich mit den Pointern. Sonst wären sie ja unnütz 😉

    hä? 😕

    Ansonsten siehe Shade Of Mines Antowrt. Ohne den "echten" Code kann man nicht sagen, wo genau der Fehler liegt.


Anmelden zum Antworten