c - 插入到c中的动态二维数组

标签 c memory-management dynamic-arrays

我正在尝试将值插入到动态二维字符数组中:

    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/

相关文章:

c - 如何从 C 函数返回指针?

c - printf %p 返回值

c++ - new/delete 和 malloc/free 有什么区别?

Android Activity 堆积在后台导致 OutOfMemory 错误

dynamic-arrays - 动态数组中的移动次数

c - 动态数组类不会打印

在 Windows 中更改文件所有者

python - Python 内部是如何存储日期时间的?

c++ - 取消分配从函数返回的 char*

c - 从C中的动态数组中的特定位置删除元素