C++ 将指向数组的指针数组传递给将发生malloc()的函数
我一直通过在函数外部运行malloc()来避免这种情况,但实际上函数知道数组需要多大,而外部不知道数组需要多大 我有:uint8_t*jpg[6],它是指向六个jpg压缩图像的六个指针,这些图像将被文件中读取的代码malloc-ed。换句话说,这是一个由六个指针组成的数组,指向六个大小不确定的数组 我一直在试图弄清楚如何将指向指针的指针传递到函数中,以便它能够使用已知大小的jpg数据对内存进行malloc() 我试过很多东西,但都没法编译 我最近的尝试是这样的,我不明白为什么它不起作用: 主要代码:C++ 将指向数组的指针数组传递给将发生malloc()的函数,c++,arrays,function,pointers,malloc,C++,Arrays,Function,Pointers,Malloc,我一直通过在函数外部运行malloc()来避免这种情况,但实际上函数知道数组需要多大,而外部不知道数组需要多大 我有:uint8_t*jpg[6],它是指向六个jpg压缩图像的六个指针,这些图像将被文件中读取的代码malloc-ed。换句话说,这是一个由六个指针组成的数组,指向六个大小不确定的数组 我一直在试图弄清楚如何将指向指针的指针传递到函数中,以便它能够使用已知大小的jpg数据对内存进行malloc() 我试过很多东西,但都没法编译 我最近的尝试是这样的,我不明白为什么它不起作用: 主要代
...
uint8_t *jpg[6];
int size[6]; // returns the size of the images in bytes.
LoadJPG(&jpg, size);
...
功能:
LoadJPG(uint8_t ***jpg, int *size)
{
...
*jpg = (uint8_t *) malloc(blahblahblah);
...
memcpy(**jpg, *indata, blahblahblah);
...
}
指向函数调用和函数的错误点:
error: argument of type "uint8_t *(*)[6]" is incompatible with parameter of type "uint8_t ***"
<>我在C++中编译了GCC 4.94/p>< P>,它是不确定的行为,在没有创建对象的情况下写入Malc空间。你提到你在学习-一个好的学习方法是使用简单的,惯用的C++代码。 该程序可能看起来像:
#include <array>
#include <vector>
void LoadJPG( std::array<std::vector<uint8_t>, 6> &jpgs )
{
jpgs[0].resize(12345);
// use std::copy or memcpy to copy into &jpgs[0][0]
jpgs[1].resize(23456);
// etc.
}
int main()
{
std::array<std::vector<uint8_t>, 6> jpgs;
LoadJPG(jpgs);
}
#包括
#包括
void LoadJPG(标准::数组和jpgs)
{
jpgs[0]。调整大小(12345);
//使用std::copy或memcpy复制到&jpgs[0][0]
jpgs[1]。调整大小(23456);
//等等。
}
int main()
{
std::数组jpgs;
载荷jpg(jpgs);
}
对于那些像我一样迷惑的人,正确的方法是用C结构(如果你使用像CudaC这样过时的东西,不想把所有的永恒都转换成C++结构到C结构),那是很明显的,直到今天早上我才意识到这是很愚蠢的。
主要内容:
功能:
error: argument of type "uint8_t *(*)[6]" is incompatible with parameter of type "uint8_t ***"
void GetRawImagesFromCamera(uint8_t **jpg, int *size)
...
for (i=0; i < CAMERAS; i++)
{
jpg[i] = (uint8_t *) malloc(size[i]);
memcpy((void *) jpg[i], (void *) buff[i], size[i]);
...
}
...
void GetRawImagesFromCamera(uint8\u t**jpg,int*size)
...
对于(i=0;i
这是因为数组是通过指向第一个元素的指针传递的。我确信我需要传递一个指向指针的指针,但这正是传递数组时传递的内容。1。了解指针和数组之间的区别。2.在C++中不要使用MALLC。3.不要在C++ 4中使用传递指针。(高级)完全不要使用原始指针或C样式数组谢谢您的帮助。我知道我使用的是混合C和C++。我在做有效的事情,因为我在学习。但我还是没有答案,太好了。多谢。