将另一个变量添加到结构C / C ++时发生Malloc错误

我正在做一个项目,发现一个我不知道如何解决的问题。我们也正在使用SDL库。

基本上我已经定义了我的结构:

    typedef struct data{
        int type;
        int x;
        int y;
        struct data *prox;
};

typedef struct data * Apt_No;

发生的事情是,如果我向结构中添加更多变量(需要这样做),则下面的函子的第二个malloc会出现以下错误:断言`(old_top ==(((mbinptr)(((char * )&((av)-> bins [(((1)-1)* 2]))-__builtin_offsetof(struct malloc_chunk,fd)))))&& old_size == 0)|| (((unsigned long)(old_size)> =(unsigned long)((((((__ builtin_offsetof(struct malloc_chunk,fd_nextsize))+((2 *(sizeof(size_t)))-1))&〜((2 *(sizeof (size_t)))-1)))&&(((old_top)-> size&0x1)&&((unsigned long)old_end&pagemask)== 0)'失败。中止了。

我试图了解正在发生的事情,但无法得出任何结论...每个结构都已链接并添加到动态列表中。

Apt_No get_info_window(int *x_board, int *y_board, Apt_No topo){

    FILE *fp = fopen("board.txt", "r");

    if(fp == NULL){
        printf("Error opening brick file\n");
        exit(-1);
    }

    int k = 1;

    fscanf(fp, "%d %d", x_board, y_board);

    char *line;

    line = malloc(*x_board * sizeof(char)+1);

    SDL_Event event;
    struct data *event_data;
    struct data msg;


    char string = 'B';

    topo = create_dynamic_list();

    while(fscanf(fp, "%s", line) == 1){

        for (int j=1; j<*x_board; j++){

            if(line[j] == string){

                msg.x = j;
                msg.y = k;
                msg.type = brick;

                event_data = (struct data *)malloc(sizeof(struct data));

                if(event_data == NULL){
                    printf("Erro a alocar memória.\n");
                    return topo;
                }

                *event_data = msg;
                SDL_zero(event);
                event.type = Event_ShowCharacter;
                event.user.data1 = event_data;
                SDL_PushEvent(&event);

                topo = add_element_list(msg, topo);
                printf("Added element to the list\n");  
            }
        }  
        k = k+1;
    }
    return topo;
}

感谢您的时间!

评论