ubuntu - C malloc doesn't work the way I expected it to -
i have no idea wrong code.
char *names; int = 6; names = (char *) malloc((i+1)*sizeof(char)); printf("%d", strlen(names));
0 result instead of 7, why?
//i learnt using malloc this: tomb = (double*) malloc(n*sizeof(double));
line line...
int len1 = 0; int = 6;
these should both size_t
.
names = (char *) malloc((i+1)*sizeof(char));
you did not show variable declaration names
. going assume char *
, in future make sure show variable declarations all variables, or better, provide complete test program can compile , run ourselves if have to.
in c, not cast return value of malloc
. in c-family languages, not write sizeof(char)
, 1 by definition.
you need check whether malloc
failed (returned null
).
while (names[len1] != '\0')
undefined behavior on line, because memory returned malloc
uninitialized. loop may iterate any number of times, including zero, seven, six, five, four, three, two, one, eight, nine, ten, 4096, , infinity. entitled crash program or make demons fly out of nose.
len1++;
also, have reinvented strlen
.
printf("%d", len1);
need \n
after %d
.
Comments
Post a Comment