求一古老指针问题
void test4()
{
int i;
char **p = (char**)malloc(1000);
int sum = 0;
for(i=0; i<50; i++)
{
p[i] = (char *)malloc(i+1);
printf("p[%d]:%d\n", i, strlen(p[i]));
sum +=strlen(p[i]);
}
printf("sum: %d\n", sum);
for(i=0; i<50; i++)
free(p[i]);
}
int main(void)
{
test4();
return 0;
}
为什么将char **p = (char**)malloc(1000);里的1000改为其他值,分配的空间会不一样,想用二维指针为每分配不连续的空间,想得到这样的结果:p[0] : 1 p[1] : 2 p[2] = 3……
不知哪里出错了,求大拿。。。 二维指针 strlen
[解决办法]
哪里不一样呢?
p[i] = (char *)malloc(i+1);
//这里没有清空或者赋值,直接strlen是得不到正确的长度的!
printf("p[%d]:%d\n", i, strlen(p[i]));
printf("p[%d]:%d\n", i, _msize(p[i])/sizeof(char));