C에서 동적으로 크기가 지정된 배열이 필요한 게임을 만들려고하지만 동일한 코드가 다른 프로그램에서 작동하더라도 내 코드가 작동하지 않습니다. 여기C에서의 동적 메모리 할당이 작동하지 않습니다.
은 내 #includes
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SwinGame.h" //API for graphics, physics etc
#include <math.h>
여기
있다 내 typedefs
사용 관련 structs
님
void add_enemy(enemy_data_array *enemies)
{
enemy_data *new_array;
enemies->size++;
new_array = (enemy_data *)realloc(enemies->data, sizeof(enemy_data) * enemies->size);
if (new_array) //if realloc fails (ie out of memory) it will return null
{
enemies->data = new_array;
// enemies->data[enemies->size - 1] = read_enemy_data();
printf("Enemy added successfully!\n");
}
else
{
printf("FAILED. Out of Memory!\n");
enemies->size--;
}
}
: 여기
typedef struct position_data
{
double x;
double y;
} position_data;
typedef enum enemy_type_data {CIRCLE, TRIANGLE, SQUARE} enemy_type_data;
typedef struct enemy_data
{
position_data location;
enemy_type_data type;
bitmap bmp;
double health;
double speed;
int path_to;
} enemy_data;
typedef struct enemy_data_array
{
int size;
enemy_data *data;
} enemy_data_array;
배열에 요소를 추가하는 기능이며
그리고 여기 내 함수 호출 및 변수 선언입니다. 메인 프로 시저의 내용 :
int main()
{
path_data my_path[41];
enemy_data_array enemies;
enemies.size = 0;
add_enemy(&enemies);
}
왜 작동하지 않습니까?
게시 된 코드에 '# include'문과 'bitmap'및 'position_data'정의와 같은 주요 세부 정보가 빠져 있습니다. 컴파일 할 때 항상 모든 경고를 활성화 한 다음 해당 경고를 수정하십시오. (최소한'gcc '의 경우'-Wall -Wextra -pedantic'도 사용합니다 :'-std = gnu99 -Wconversion') – user3629249
은 이제 그 세부 사항을 추가하기 위해 편집 할 것입니다. Thanks @ user3629249 – Andrew