我正在尝试执行一个函数,该函数将在 char 数组中存储一些要在其上打印的信息:
int offset = 0;
size_t size = 1;
char *data = NULL;
data = malloc(sizeof(char));
void create(t_var *var){
size_t sizeLine = sizeof(char)*(strlen(var->nombre)+2)+sizeof(int);
size = size + sizeLine;
realloc(data, size);
sprintf(data+offset,"%s=%d\n",var->name,var->value);
offset=strlen(data);
}
list_iterate(aList, (void *)create);
t_var 是一个包含两个字段的结构:名称 (char*) 和值 (int)。
这段代码有什么问题?在 Valgrind 上运行时,它会提示 realloc 和 sprintf。
最佳答案
在不知 Prop 体的 valgrind 错误的情况下,突出的错误是:
realloc(data, size);
应该是 data = realloc(data, size);
关于c - 重新分配一个 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13170064/