c++ - 如何从另一个指针指向的内存地址获取数据?

标签 c++ pointers memory-address pointer-to-pointer

我正在使用 GenICam 库,其中一种方法描述如下: enter image description here

我正在使用这种方法来获取相机帧。 我们必须向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;

但我收到以下错误:error C2440: '=' : cannot convert from char to char *。

如何获取存储在该内存地址中的数据?

最佳答案

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 个字节。

关于c++ - 如何从另一个指针指向的内存地址获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52623023/

相关文章:

c - 是否也为数组变量分配内存来存储数组中第一个元素的地址?

c++ - 使用无效指针/内存地址 : C++ (windows)

c++ - 使用字符数组作为文件名?

C++ 守护进程不会接收 SIGCHLD 信号

c - 指向 char 数组的指针的值与普通 char 指针的值

c - 在函数中返回指针时出现段错误

c - 为什么使用 char** 会导致 char* 工作时出现段错误?

c - c中的内存地址是正值还是负值?

c++ - 使用 KNN 分类器进行数字识别前的预处理

c++ - 试图将位图复制到 WMP 渲染器中 -> 颠倒了!