我正在尝试将值插入到动态二维字符数组中:
theBoard->_board[row][col] = val;
但每次将字符分配给 (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
最佳答案
您的看板可能只有 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> -->
...
关于c - 插入到c中的动态二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8311605/