私のプログラムは次のようなものです:
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に問題があるかどうかはわかりません。