无法从char *转换为void **

时间:2014-12-13 23:09:45

标签: c casting

我修改了以下代码

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 *是否正常?

1 个答案:

答案 0 :(得分:5)

void *是一个通用指针。 void *类型的对象可以指向任何内容。但是,void **只能指向void *类型的对象。 char不是void *,因此转换失败。