【发布时间】:2014-08-20 21:37:45
【问题描述】:
我需要为 QImage 数组动态分配内存。
它在 Linux 中对我有用:
void Arrange_Images(int numOfCams, int numBoards)
{
QImage * array_of_images[numOfCams*numOfBoards];
.
.
.
}
但 Windows 无法解决此问题,并将其标记为错误。 对于标准数组,我可以使用 malloc,但这是一个 QImage 数组。 在此之后,每个单元格将被图像填充以进行重新排序和进一步处理。 感谢您的帮助。
【问题讨论】:
-
粘贴错误信息。
-
一些建议: 1. 上面不是
QImage数组,它是指向Qimage的指针 数组。 2. 你不应该在 C++ 中使用malloc。 3. 对于原始内存管理,您应该使用new,但您确实应该避免在现代 C++ 的应用程序代码中进行原始内存管理。 4. 使用QImage,您不必使用指针,因为它是一个轻量级的写时复制类,因此您可以在可能的情况下使用值。 5. 在现代 C++ 中也应该避免使用 C 风格的数组,而在 Qt 中,如果你真的想要固定大小的数组,你可以使用嵌套的QList,或std::vector,或std:array。 -
而且,它可以在 Linux 上运行可能是因为您使用了一个编译器,该编译器支持 C 风格的可变长度数组 (VLA) 和 C++。它不是标准的 C++,而是特定编译器提供的扩展。
-
在编译之前,我不知道我将使用多少 QImage。我在 Linux 中有一个工作代码,现在我正试图将它转移到 Windows。我会让它按原样工作,然后改进它。