Слишком много членов в структуре?? (Программа работает нормально, но завершается с ошибкой)

У меня есть очевидный вопрос, но я озадачен этой проблемой.

Хорошо, сначала позвольте мне рассмотреть ситуацию. У меня есть структура под названием 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;
    }
}

0 ответов

Другие вопросы по тегам