Luc*_*uca 0 c pointers casting
我不清楚当你通过双指针转换分配的内存时会发生什么,如:
char **ptr;
ptr=(char *)malloc(sizeof(char)*value);
for(i=0;i<value;i++)
ptr[i]=(char **)malloc(sizeof(char *)*another_value);
Run Code Online (Sandbox Code Playgroud)
在malloc的第一次调用期间,void*被转换为char*所以,我可以使用*(ptr + i)访问它,但是在malloc的第二次调用期间我不明白为什么我需要将void*转换为char**,不足以将它投射到char*?
在上面的片段中进行投射是没有意义的.不要转换返回值malloc.分配也是错误的.应该是这样的:
ptr = malloc(sizeof(char*)*value);
Run Code Online (Sandbox Code Playgroud)
和
ptr[i] = malloc(another_value);
Run Code Online (Sandbox Code Playgroud)