我正在做一个项目,发现一个我不知道如何解决的问题。我们也正在使用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;
}
感谢您的时间!