C ++ - 从'void *'到'uint8_t **'的转换无效

时间:2013-12-02 12:21:46

标签: c++

我有一个初学者的问题,我找不到任何正确的方法。 在标题中我有:

    static uint8_t **data = NULL;

然后在我的函数中我想:

    data = av_mallocz (sizeof (uint8_t*) *planes);

但是出现了错误:

  

从'void *'到'uint8_t **'的无效转换

av_mallocz函数来自ffmpeg:return av_mallocz (nmemb *size);

有人有想法吗?

1 个答案:

答案 0 :(得分:3)

试试这个:

data = (uint8_t**)av_mallocz (sizeof (uint8_t*) *planes);

请记住,sizeof (uint8_t*)并没有告诉您的代码数据的类型,它只是帮助计算malloc需要多少空间。 malloc返回通用空间,这就是使用void *的原因。您仍然需要将void *转换为您想要的类型。 哦,既然这是C ++,你可能想考虑一个static_cast<uint8_t**>(...),只是为了更好。