0
我正在C中制作游戏原子,人们轮流将原子放入网格空间。我试图实现一个移动跟踪系统,其中每次移动时,移动数组都会增加一个。我知道效率不是很高(我知道我不检查malloc返回值),但只是试图让它至少现在工作。下面是我如何做它:malloc崩溃程序第4次电话
int move_count_temp = (game->move_count)+1;
move_t* moves;
//Check if it's first move
if (game->moves == NULL) moves = (move_t*)malloc(sizeof(move_t*));
else moves = (move_t*)malloc(move_count_temp*sizeof(move_t*));
// Copy old moves over
for (int i=0; i<game->move_count;i++) {
moves[i].x = game->moves[i].x;
moves[i].y = game->moves[i].y;
}
//Copy current move
moves[move_count_temp-1].x = y_coordinate;
moves[move_count_temp-1].y = x_coordinate;
// Free old moves pointer and assign new one
free(game->moves);
game->moves = moves;
game->move_count = move_count_temp;
的问题是关于该样品,在4号线mallocing moves
时崩溃第四招。我一直试图修复它一段时间,只是不知道为什么会发生。任何见解都会有所帮助,谢谢。
P.S.游戏结构有一个指向move结构的指针,这是move_t结构;
struct move_t {
int x;
int y;
};
感谢您的帮助!看起来它现在正在工作(我投了,因为我正在使用C++编译器,否则它会给出一个错误)。 – Jayce444
是的,C++确实需要演员。 –
@ Jayce444在C++中使用C编译器或代码时,无法在C++编译器(仅C标头)中编译C代码,C不是C++的子集,C++不是C的超集。 – 12431234123412341234123