在子函式中 malloc 後 free 發生異常,排查發現指標操作超出配置範圍。總結六大注意事項:
malloc 失敗、free 後、free 前皆將指標設為 NULL。free(NULL) 安全無害。p++ 後 free(p) 傳入非首址,必崩潰。free 需首址。free 時堆積損毀拋錯誤。char *Ptr = NULL; Ptr = (char *)malloc(100 * sizeof(char)); if (NULL == Ptr) exit(1); gets(Ptr); // ... 使用 ... free(Ptr); Ptr = NULL;
掌握「配對、歸零、不越界、不改指向」四原則,malloc/free 並不難用。
參考回答:知乎連結