我不清楚当你通过双指针转换分配的内存时会发生什么,如:
char **ptr;
ptr=(char *)malloc(sizeof(char)*value);
for(i=0;i<value;i++)
ptr[i]=(char **)malloc(sizeof(char *)*another_value);
在第一次调用 malloc 时,void * 被强制转换为 char *,因此,我可以使用 *(ptr+i) 访问它,但在第二次调用 malloc 时,我不明白为什么我需要强制转换为 void * 到 char **,将它转换为 char * 还不够吗?
最佳答案
在上面的片段中进行转换是没有意义的。 Do not cast return value of malloc
.而且分配也是错误的。它应该是这样的:
ptr = malloc(sizeof(char*)*value);
和
ptr[i] = malloc(another_value);
关于通过双指针转换分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27724166/