c - 重新分配一个 char*

标签 c printf realloc

我正在尝试执行一个函数,该函数将在 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/

相关文章:

c - Matlab 最终因 mex 回调而崩溃

c - ANSI C代码中的一维线性卷积?

c - 如何在c中实现我自己的printf

c - 写入重新分配区域期间出现段错误

c - 头部为双指针的列表

c++ - 将 int 值赋给指针

c - 在 Netbeans 中在哪里设置 GCC 库依赖项?

Java:将二维字符串数组打印为右对齐表

c - 为什么下面的代码给出的输出与预期不同?

在多维数组上使用 Realloc 和 strcat 时缺少字符?