首頁>Program>source

您最有可能看到此問题,因為您的問题已作為该問题的副本被關闭.有關相關問题的完整列表,請參阅免费字元*:無效的下一个大小(快速)由2014年11月11日的noobie詢問。

我要釋放一个自由女神 经過串聯過程後,但出現此錯誤:

char*

這是我的代碼:

free(): invalid next size (fast): 0x0000000001b86170

通用問题

執行程式時,我看到如下錯誤訊息:

void concat(stringList *list) {
    char *res = (char*)malloc(sizeof(char*));
    strcpy(res, list->head->string);
    list->tmp = list->head->next;
    while (list->tmp != NULL) {
        strcat(res, ",");
        strcat(res, list->tmp->string);
        list->tmp = list->tmp->next;
    }
    printf("%s\n", res);
    free(res);
}

*** glibc detected *** ./a.out: free(): corrupted unsorted chunks: 0x12345678 ***之後,详细資訊可以包含以下任何內容 和程式名稱,並在訊息後跟一个十六进製地址(顯示為0x12345678)和另一个 *** glibc detected ***

***
  • free(): corrupted unsorted chunks: 0x12345678
  • free(): invalid next size (fast): 0x12345678
  • free(): invalid next size (normal): 0x12345678
  • free(): invalid pointer: 0x12345678
  • free(): invalid size: 0x12345678
  • malloc(): corrupted unsorted chunks: 0x12345678
  • malloc(): corrupted unsorted chunks 2: 0x12345678
  • malloc(): memory corruption: 0x12345678
  • malloc(): memory corruption (fast): 0x12345678
  • malloc(): smallbin double linked list corrupted: 0x12345678
  • munmap_chunk(): invalid pointer: 0x12345678
  • realloc(): invalid next size (fast): 0x12345678
  • realloc(): invalid old size (fast): 0x12345678
  • realloc(): invalid pointer: 0x12345678

這是在致電 corrupted double-linked list: 0x12345678時發生的 功能; 该功能有什麼問题?

frobnicate()
最新回復
  • 5月前
    1 #

    示例問题的答案

    unwind對示例問题给出了可接受的答案:

    Your code is wrong.

    You are allocating space for a single pointer ( malloc(sizeof(char*)) ),但没有字元.您正在用所有字元串覆盖分配的空間,从而匯致未定義的行為(在這種情况下,损壞 malloc() 的簿記資料。

    您不需要為指標分配空間( res ); 這是一个區域性變數.您必须為要儲存在指標所儲存地址處的所有字元分配空間。

    strlen()

  • 如何从VBScript呼叫C#DLL函式
  • C#陣列列表的排列?