我有一个如下代码,它工作正常:

AVFrame *frame = NULL;
open_input(&frame);

其中open_input的输入参数类似于:AVFrame**frame;
现在,我想扩展这段代码来处理一个帧数组(比如,N帧)。我尝试了以下代码,但我的代码在MingW被gcc编译后停止工作:
int i, N = 3;
AVFrame **frame;
frame = (AVFrame *) malloc(N * sizeof(AVFrame *));
for(i=0;i<N;i++){
   frame[i] = (AVFrame *) malloc(sizeof(AVFrame));
   open_input(&frame[i]);
}

你知道,有什么问题吗?

最佳答案

如果要分配一个帧数组,只需执行以下操作

AVFrame *frame = malloc(N * sizeof(*frame));

使用frame[index]访问每个元素
只有在需要AVFrame数组的数组时,才需要指向AVFrame的指针。

关于c - 在C中创建指向结构的指针的动态数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20746083/

10-09 15:50