我做了一个小代码:
void *toto = malloc(8 * sizeof(char *) * 8);
char **tata = (char **)toto;
tata[5][5] = 'a'
但我有一个分割错误。如何将我的
void *
转换为char **
? 最佳答案
malloc
调用正在为64个未初始化内存指针分配空间。然后,使用tata
作为双间接指针。就这样:tata
指向64个指针的开头。tata[5]
是malloc
d块的第六个元素,由于tata
具有类型char**
,tata[5]
具有类型char*
:带有垃圾的指针。tata[5][5]
是从tata[5]
开始指向的第六个元素。但是由于tata[5]
是垃圾,tata[5][5]
是内存空间中的随机元素。