我有一个初学者的问题,我找不到任何正确的方法。 在标题中我有:
static uint8_t **data = NULL;
然后在我的函数中我想:
data = av_mallocz (sizeof (uint8_t*) *planes);
但是出现了错误:
从'void *'到'uint8_t **'的无效转换
av_mallocz
函数来自ffmpeg:return av_mallocz (nmemb *size);
有人有想法吗?
答案 0 :(得分:3)
试试这个:
data = (uint8_t**)av_mallocz (sizeof (uint8_t*) *planes);
请记住,sizeof (uint8_t*)
并没有告诉您的代码数据的类型,它只是帮助计算malloc需要多少空间。 malloc返回通用空间,这就是使用void *的原因。您仍然需要将void *转换为您想要的类型。
哦,既然这是C ++,你可能想考虑一个static_cast<uint8_t**>(...)
,只是为了更好。