我正在研究一些代碼,並且我有一點要抓取一些二進制數據,然後想從中提取一些字節。所以,我有以下幾點: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