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