So habe ich einen Code und wenn ich es ausführen, hängt es, wenn ich eine Größe größer als 3 eingeben. Wenn es genau 3 ist, läuft es reibungslos. Ich beschränke das Problem auf malloc und frei und ich weiß nicht, was das Problem ist. Ich bin neu darin, also wird jede Hilfe geschätzt.C Programmierung- Malloc/Free
do //repeatedly ask the user to put a number between 3-9
{
printf("Enter the size of the game board between 3-9: ");
scanf("%d", &size);
}while(size<3 || size>9);
if((board = (char***)malloc(sizeof(char**)*size))==NULL)
printf("Memory Allocation failed\n");
for(i=0; i<size; i++)
{
if((board[i] = (char**)malloc(sizeof(char*)*size))==NULL)
printf("Memory Allocation failed\n");
for(j=0; j<size; j++)
{
if((board[i][j] = (char *)malloc(sizeof(char)*4))==NULL)
printf("Memory Allocation failed\n");
strcpy(board[i][j], "Go");
}
}
/*************Some random code ***********/
free(board);
for(i=0;i<size;i++)
{
free(board[i]);
for(j=0;j<size;j++)
free(board[i][j]);
}
Die Reihenfolge der 'free()' in genau umgekehrter Reihenfolge 'malloc sein sollte()'. –
Wenn Sie 'frei (board [i]) verwenden;' Sie verlieren tatsächlich den Zeiger auf den Speicher, den Sie zugewiesen haben, so dass Sie 'free (board [i] [j]);' nicht verwenden können. Benutze kostenlos (board [i]); nach dem zweiten für. –
Okay, ich habe es Danke Jungs. – user1311135