0

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) の 2 つのフィールドを持つ構造体です。

このコードの何が問題になっていますか? Valgrind で実行すると、realloc と sprintf について不平を言います。

4

2 に答える 2

4

特定の valgrind エラーを知らなくても、目立つエラーは次のとおりです。

realloc(data, size);する必要がありますdata = realloc(data, size);

于 2012-11-01T02:22:36.070 に答える