我有一個簡單的C程序,它有一個指向字符數組的指針。要啓動它,我使用malloc
,然後調整大小,然後在程序中稍後設置x次。gdb給出錯誤,但程序運行正常
當我與realloc
調整一次,GDB沒有顯示任何錯誤,但是,如果我嘗試再次調用調整大小功能,GDB顯示以下錯誤:
warning: Invalid Address specified to RtlReAllocateHeap(003E0000, 00404076)
任何想法爲什麼調整它不止一次會產生這個錯誤?
編輯
我發揮它周圍,似乎當我註釋掉指針數據的設置,這是調整大小後的錯誤不會發生。
void setName(struct class_x *class, char *name)
{
class->name = (char *) reallocateMemory(class->name, sizeof(char) * strlen(name) + 1);
class->name = name;
}
void *reallocateMemory(void *member, size_t size)
{
void *tmp = realloc(member, size);
if(tmp == NULL)
{
//handle
}
return tmp;
}
調用realloc的代碼是什麼樣的? – sth 2010-02-06 18:20:33
您是否在realloc後檢查失敗? – 2010-02-06 18:22:12
這是沒有錯誤的,這是一個警告 – tur1ng 2010-02-06 18:24:07