我遇到了免費的麻煩。我想分配一個* chars的二維數組並釋放它們,但它在運行時失敗。我正在學習指針,可能過於複雜。使用免費()中的問題C
//NUMBEROFLINES, NUMBEROFDIE, and WIDTHOFDIE are some ints (3, 2, 3),
int iLineSize, iLine, iDie;
char **piDieString;
piDieString = (char**)malloc(NUMBEROFLINES * sizeof(*piDieString)); //Allocate number of lines
iLineSize = NUMBEROFDIE * WIDTHOFDIE * sizeof(char); //Size of line
for(iLine = 0; iLine < NUMBEROFLINES; iLine++)
{
piDieString[iLine] = (char*)malloc(iLineSize); //Allocate size of lines
}
//Stuff happens
/*Freeing*/
for(iLine = 0; iLine < NUMBEROFLINES; iLine++)
{
free(piDieString[iLine]);
}
free(piDieString);
dont cast malloc –
@nikhilmehta ***不,這是絕對的,可怕的錯誤!***不要給壞的建議。編寫'sizeof(* piDieString)'更好**,因爲它更安全(因爲它消除了冗餘)。 'sizeof'運算符的參數是**未計算的,**因此在'sizeof'內部取消引用未初始化的指針是**有效。** – user3447428
'malloc()''free()'看起來不錯,可能是問題是在'//發生的事情'中。 – Rohan