Programm stürtzt ab bei free()



  • Abend, habe en kleines Problem und zwar mein Programm stürtzt immer bei free() ab hier der Code:

    int result(char *wort) {
      char *p=NULL
    
       p = calloc(strlen(wort)+1,sizeof(char));
    
    //arbeite mit p....
    
    free(p); //genua hier stürzt des programm immer ab
    p = NULL
    }
    

    ich glaube der code erklärt doch mein problem ganz gut...



  • Interessant ist, was du mit p dazwischen anstellst. Höchstwahrscheinlich schreibst du über die Grenze des Speicherblocks hinaus und zerstörst damit den Aufbau des Heaps.



  • Mach mal

    int result(char *wort) {
      char *p=NULL, *tmp;
    
       p = calloc(strlen(wort)+1,sizeof(char));
       tmp = p;
    
    //arbeite mit p....
    // tmp gar nicht anfassen
    
    printf("p == tmp ? %s\n", p == tmp ? "ja" : "nein");
    free(p); //genua hier stürzt des programm immer ab
    p = NULL; /* völlig unnötig */
    }
    

    was kommt raus?


Anmelden zum Antworten