是否有可能将空*转换为char**?

Jér*_*yet 0 c pointers void

我做了这个小代码:

void  *toto = malloc(8 * sizeof(char *) * 8);
char  **tata = (char **)toto;
tata[5][5] = 'a'
Run Code Online (Sandbox Code Playgroud)

但我有一个分段错误.我怎样才能将我转换void *char **

vz0*_*vz0 5

malloc调用为64个未初始化内存指针分配空间.然后,您正在使用tata双间接指针.而已:

  • tata 指向64指针的开头.
  • tata[5]mallocd块的第六个元素,并且因为tata有类型char**,所以tata[5]有类型char*:带垃圾的指针.
  • tata[5][5]是从头开始指向的第六个元素tata[5].但既然tata[5]是垃圾,tata[5][5]你的记忆空间中就是一个随机元素.