我有一個函數,我試圖從大塊數據中取16位。我在Solaris機器上運行此代碼,並且可以在沒有警告或錯誤的情況下進行編譯。然而,當我運行這段代碼時,無論何時它到達了我的指針去掉的地方,我都會立即發生總線錯誤。代碼看起來是這樣的:Solaris去引用總線錯誤
void find_info(unsigned char* packet) {
int offset = 9;
uint16_t short_value = *(uint16_t*)(packet+offset);
}
當我試圖去參考,爲了得到一個簡短的「包+偏移」指針發生的總線錯誤。我知道在數據包[offset]和數據包[offset + 1]上有數據。在Linux和Cygwin上,這段代碼工作正常。據我所知,我沒有做任何革命性的事情。這裏發生了什麼?
非常有趣。我將不得不進行更多的實驗,但是感謝給我帶來了正確的方向。 – Poff 2011-06-15 17:30:30