我正在使用GenICam库,其中一种方法描述如下:
我正在使用这种方法来获取相机框架。
我们必须向pBuffer
提供一个指针,该方法将返回到我们的指针,即存储数据的内存地址。
所以,我想获取存储在该内存地址中的数据,但是要这样做:
char* image_data = nullptr;
image_data = new char[1024];
status = gentl->DSGetBufferInfo(datastream_module_handle, new_buffer_event_data.BufferHandle, GenTL::BUFFER_INFO_BASE, &info_datatype, image_data, &info_datasize);
std::cout << **image_data << std::endl;
我收到此错误:错误c2100非法间接c ++。
我尝试使用辅助指针:
char* image_data = nullptr;
image_data = new char[1024];
char* p_image_data = nullptr;
p_image_data = new char[1024];
status = gentl ... (same method)
p_image_data = *image_data;
std::cout << *p_image_data << std::endl;
但是我遇到以下错误:错误C2440:'=':无法从char转换为char *。
如何获取存储在该内存地址中的数据?
答案 0 :(得分:3)
p_image_data = *image_data;
应该是
p_image_data = image_data;
它们都具有相同的类型(char*
),因此不需要取消引用。通过取消对image_data
的引用,您会再次得到一个char
,并且无法将其分配给p_image_data
(即char*
),因此会出错。
当然,现在您不必复制数据,只需设置指针即可。相反,您可能想要的是:
memcpy(p_image_data, image_data, 1024);
这会将image_data
指向的1024个字符(由DSGetBufferInfo
修改后)复制到p_image_data
指向的1024个字节中。