我做了一个小代码:

void  *toto = malloc(8 * sizeof(char *) * 8);
char  **tata = (char **)toto;
tata[5][5] = 'a'

但我有一个分割错误。如何将我的void *转换为char **

最佳答案

malloc调用正在为64个未初始化内存指针分配空间。然后,使用tata作为双间接指针。就这样:
tata指向64个指针的开头。
tata[5]mallocd块的第六个元素,由于tata具有类型char**tata[5]具有类型char*:带有垃圾的指针。
tata[5][5]是从tata[5]开始指向的第六个元素。但是由于tata[5]是垃圾,tata[5][5]是内存空间中的随机元素。

10-07 17:12