c++ - C扩展一个指针数组

标签 c++ c arrays pointers opencv

我正在尝试使用 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/

相关文章:

javascript - 合并数组中具有相同键的 JavaScript 对象

javascript - 在数组原型(prototype)中循环

c++ - 迭代 shared_ptr<std::vector<T>>

c++ - 在 OpenCV C++ 中为 OCR 规范化车牌

c - 当产品有 2 个或更多单词时,scanf() 不起作用

java - 在Java中对二维数组中的列进行就地反转的方法

c++ - Visual Studio 2012 静态库与 Visual Studio 2017

c++ - 我是线程的新手,这个编译错误是什么意思?

将多维数组转换为另一种类型的多维数组

c - uint8_t 与无符号字符