0

私のプログラムは次のようなものです:

char *line = "hello a b c d e f g ";
/* split it into words */
char **argv = NULL;
**argv = malloc(sizeof(char*));
if (*argv = NULL)
    printf("null malloc");
    printf("malloc ok");
    int i;
    for (i=0;;i++){
        printf("i=%d", i);
        line = strwrd(line, argv[i], 1024, " \t");
        printf("strwrk ok");
        if (argv[i] = NULL)
             break;
        **argv = realloc(*argv, (i+2)*sizeof(char*));   
        printf("realloc ok");
    }
}

valgrind で実行すると、次のように表示されます。

==22169== Invalid read of size 4
==22169==    at 0x804858B: main (printTest.c:27)
==22169==  Address 0x0 is not stack'd, malloc'd or (recently) free'd

私はCの新人なので、mallocに問題があるかどうかはわかりません。

4

1 に答える 1

2
**argv = malloc(sizeof(char*));

する必要があります

argv = malloc(sizeof(*argv));
于 2012-09-16T19:32:59.480 に答える