C国际象棋程序中自由对象的校验和无效

时间:2017-10-08 18:29:36

标签: c

我正在尝试自学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

有关为何发生这种情况的原因/如何解决这个问题?我环顾四周,但没有找到任何关于主题的内容!

非常感谢。

0 个答案:

没有答案