我想在C中開發TicTacToe遊戲,我使用了下列結構。myboard->一個成員用於存儲'X'或'O',這意味着移動一名球員與球隊的座標相同,在(1.1) 'X' 或 'O'(3.1)在一個結構的2D陣列中分配內存的麻煩
typedef struct{
int** a;
int size;
}_board;
typedef _board* board;
board myboard =(board) malloc(sizeof(board));
scanf_s("%d", &(myboard->size));
尺寸=是井字遊戲板的n×n的大小。
myboard->a =(int**)malloc(myboard->size*sizeof(char *));
if (myboard->a = NULL)
{
printf("ERROR!!!");
}
直到此時的一切似乎工作,但是當你看到波紋管,一個得到分段錯誤嘗試分配內存。
int i;
for (i = 0; j<myboard->size; i++)
{
myboard->a[i] = malloc(sizeof(char));
if (myboard->a[i] == NULL)
{
printf("ERROR");
}
}
我在我的程序結束時免費使用了它的malloc。 非常感謝您提供任何答案,併爲我的英語不好而感到遺憾。任何幫助都是有好處的。
'for(i = 0; j size; i ++)'我建議在這個循環的條件下使用'i'。最終你會發現應該是'myboard-> a [i] = malloc(myboard-> size * sizeof(int))',因爲目前你爲每行分配了* 1 * char。也許這是意圖,但我有點懷疑它。 –
WhozCraig