私はコードを持っています。実行すると、3より大きいサイズを入力するとハングします。正確に3になると、スムーズに実行されます。私は問題をmallocに自由に絞り込みました。問題の内容はわかりません。私はこれで新しいので、任意の助けに感謝しています。Cプログラミング-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]);
}
'無料()'(malloc関数 'の正確な順序を逆にする必要があります)'の順のように、あなたが全体に必要なすべてのメモリを割り当てることができるということです。 –
「無料(board [i]);」を使用すると、割り当てられたメモリへのポインタが実際に失われるので、 'free(board [i] [j]);'は使用できません。自由(ボード[私])を使用してください。 2番目の後に。 –
よろしくお願いします。 – user1311135