我正在尝试使用 realloc 扩展指针数组,这是我的最小代码:
我用这段代码扩展数组:
YCSImage ** tabImages = NULL;
for(int i=1;i<=5;i++)
{
tabImages = (YCSImage **)realloc(tabImages,i*sizeof(YCSImage *));
tabImages[i-1] = new YCSImage;
*(tabImages[i-1]) = Mat(Size(width,height), CV_8UC3, p_pixel_buffer);
}
并尝试使用此代码访问数据:
for(int i=0;i<5;i++)
{
imwrite("../img"+to_string(i)+".png",*(tabImages[i]));
}
我没有出现段错误或类似错误,唯一的问题是 imwrite() 写入了我存储在扩展数组中的最后一张图像的 5 倍。 (就好像我在 tabImages 中给出的任何索引都得到唯一相同的图片 tabImages[4])
这段代码有什么问题?
[编辑]
我通过测试这个简单的代码发现它工作正常。问题来自于 p_pixel_buffer 是一个指针,并且每次在循环中都会发生变化,图像也是如此。
最佳答案
您正在使用相同的数据 p_pixel_buffer
初始化所有 5 个图像。以后要修改吗?
关于c++ - C扩展一个指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23196588/