我做了这个小代码:
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
具有type char**
,因此tata[5]
具有type char*
:带垃圾的指针。tata[5][5]
是从开头指向的第六个元素tata[5]
。但是由于tata[5]
是垃圾,因此tata[5][5]
是内存空间中的随机元素。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句