我试图将值插入动态的2d字符数组:
theBoard->_board[row][col] = val;
但是在每个char到(row,col)的赋值中,它也将它放在(row-1,col + 8)上。 可能是什么问题?
这是数组的分配:
if ((new = (BoardP) malloc(sizeof(struct Board))) == NULL)
{
reportError(MEM_OUT);
return NULL;
}
if ((new->_board = (char**) malloc(rows * sizeof(char*))) == NULL)
{
reportError(MEM_OUT);
return NULL;
}
int i,j;
for (i=0;i<rows;i++)
{
if ((new->_board[i] = (char*) malloc(cols * sizeof(char))) == NULL)
{
reportError(MEM_OUT);
return NULL;
}
当我插入'X'并打印时:
BoardP b = createNewDefaultBoard();
b->_board[2][0] = 'X';
printBoard(b,0,0);
我得到了这个输出:
0 1 2 3 4 5 6 7 8 9
0
1 X
2 X
3
4
5
6
7
8
9
答案 0 :(得分:2)
您的主板可能只有8列。如果您访问第8列,您将阅读(或写入)内存中的下一个内容,除了最后一行之外的所有内容都是下一行。
<0,1> <0,2> <0,3> <0,4> <0,5> <0,6> <0,7> -->
<1,0> <1,2> <1,3> <1,4> <1,5> <1,6> <1,7> -->
...