Слишком много членов в структуре?? (Программа работает нормально, но завершается с ошибкой)
У меня есть очевидный вопрос, но я озадачен этой проблемой.
Хорошо, сначала позвольте мне рассмотреть ситуацию. У меня есть структура под названием ENTITY, которая используется для хранения атрибутов для сущностей в игре. Я недавно добавил больше участников в структуру. Программа работает отлично, но когда я закрываюсь, в Windows появляется окно с сообщением об ошибке: "XXX.exe перестал работать... проверьте решение онлайн... бла-бла".
Итак, чтобы устранить неполадки, я удалил несколько элементов из структуры ENTITY, и программа работает нормально и завершает работу нормально.????
(составлено с помощью Dev-cpp)
Код:
typedef struct _ENTITY
{
char classname[16];
int health;
int vel_x;
int vel_y;
int direction;
int frame;
int flag;
SDL_Rect bbox;
struct _ENTITY *next;
struct _ENTITY *owner;
struct _ENTITY *goal;
void (*think) ();
float nextthink;
} ENTITY;
Функция, которая выделяет память структурам ENTITY
ENTITY *ENTITY_spawn (void)
{
ENTITY *node, *old_node;
int i;
node = ENTITY_head; // Top of list
// Find end of list
for (i = 0; node; i++)
{
old_node = node;
node = node->next;
}
// Allocate
node = (ENTITY*)calloc (1, sizeof (ENTITY));
if (i)
old_node->next = node;
else
ENTITY_head = node;
return node;
}
(РЕДАКТИРОВАТЬ 4/8/12) -Используется calloc вместо malloc -Вставлен void в параметры функции -Убрать NULL_void -Не удалось избавиться от приведения (ENTITY*), компилятор жалуется, что не смог преобразовать тип void (потому что я не включал stdlib.h?)
Вот как я удаляю ENTITY при выходе из программы:
void ENTITY_cleanup (void)
{
ENTITY *node, *old_node;
node = ENTITY_head;
while (node)
{
old_node = node->next;
free (node);
node = old_node;
}
}