我正在研究一些代码,并且我有一点要抓取一些二进制数据,然后想从中提取一些字节。所以,我有以下几点:std ::复制设置指针为空
unsigned char * payload;
int payload_size;
uint32_t major = 0, minor = 0;
payload = out_resp.get_payload(&payload_size); // Retrieve the data, return a pointer
if(payload_size >= 8) { // Need at least 8 bytes in the payload
std::copy(payload, payload + 4, &major);
std::copy(payload + 4, payload + 8, &minor);
}
正如你可以看到,从有效载荷的前四个字节应该放在major
,并在minor
未来四年。但是,在进行调试时,我注意到在第一个std::copy
之后,我的变量设置为NULL
!
std::copy
这是预期的行为,还是出了问题?我应该通过简单地创建另一个指针来避免这种情况,并将其传递给std::copy
?
我正在运行GDB。当GDB到达第二个拷贝行时,我打印payload,并接收:(gdb)print payload; '$ 4 =(unsigned char *)0x0' – TrueJournals 2013-03-28 01:50:31