我正在尝试自学C,目前正在开发基于位阵列的国际象棋模拟器。
我不是很远,而且我得到了这个令人讨厌的错误:
<input type="button" value="Add" onclick="Add()" /><br />
基本上是这里发生的事情:
1)我chess(59742,0x7fffa38903c0) malloc: *** error for object 0x7f9320c025e8: incorrect checksum for freed object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
棋盘结构(包含一堆malloc
s),然后循环开始unsigned long
游戏。
2)在play
函数中,我调用play
。请移动以下内容:
get_move
这就是一切都破裂的地方。 MOVE,顺便说一下,结构如下:
MOVE m;
m = (MOVE)(malloc(sizeof(MOVE)));
最烦人的是,当我在GDB中运行整个事情时,一切正常......在我新的OSX Sierra上运行。
我注意到了几件事:
1)当我没有struct move
{
unsigned int from_sq;
unsigned int to_sq;
}
typedef struct move *MOVE;
董事会结构(malloc
),并且只是致电typedef struct board *BOARD
时,一切正常(但没有董事会)。
2)当I get_move
移动结构我在malloc板块结构之前(例如在malloc
中),一切正常,直到main
尝试分配get_move
}值为unsigned int
,此时我收到错误:
move->from_sq
有关为何发生这种情况的原因/如何解决这个问题?我环顾四周,但没有找到任何关于主题的内容!
非常感谢。