c - 向结构 C/C++ 添加另一个变量时出现 Malloc 错误
问题描述
我已经定义了我的结构:
typedef struct data{
int type;
int x;
int y;
struct data *prox;
};
typedef struct data * Apt_No;
发生的事情是,如果我向结构中添加更多变量(我需要),那么下面函数的第二个 malloc 会出现以下错误:
Assertion `(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)' failed. Aborted.
我试图了解正在发生的事情,但无法得出任何结论......每个结构都链接并添加到动态列表中。
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;
}
解决方案
推荐阅读
- javascript - 为什么不建议在开发中使用 webpack mini-css-extract-plugin?
- node.js - 数据在第一次尝试时不显示,仅在刷新时显示
- c - getdents64 一次完成的缓冲区大小
- javascript - 使用 Axios 发布到 Sheetlabs API
- java - Hibernate/JPA 仅显示 Select 语句。更新/删除语句被跳过并且控制台中没有错误
- python - Pelican - 在字符串格式化期间并非所有参数都转换
- machine-learning - 微调具有更大输入大小的模型
- c# - 我需要一个如何使用 EasyNetQ 库向多个接收者广播相同消息的示例
- c# - 添加身份验证 Jwt 令牌
- javascript - 如何使用Javascript替换图像中的白色?