我修改了以下代码
void aligned_free(void *p) {
free(((void**) p)[-1]);
}
到
void aligned_free(void **p) {
free((p)[-1]);
}
带函数调用
char* a = (char*)aligned_malloc(10000,64);
aligned_free(a);
并且编译器给出错误“无法从char *转换为void **”。为什么指针char *无法转换为void **,但是void *可以吗?
void *
是通用指针。类型的对象void *
可以指向任何东西。void **
但是,A只能指向type的对象void *
。Achar
不是void *
,因此转换失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句