У меня есть функция, в которой я пытаюсь взять 16-битный из большого куска данных.Я запускаю этот код на коробке Solaris, и я могу скомпилировать без предупреждения или ошибки.Однако, когда я запускаю этот код, всякий раз, когда он попадает в ту часть, где я разыменую свой указатель, я сразу получаю ошибку шины.Код выглядит примерно так:
void find_info(unsigned char* packet) {
int offset = 9;
uint16_t short_value = *(uint16_t*)(packet+offset);
}
Ошибка шины возникает, когда я пытаюсь снять ссылку на указатель «пакет + смещение», чтобы получить короткое замыкание.Я точно знаю, что есть данные в пакете [смещение] и в пакете [смещение + 1].На Linux и Cygwin этот код работает нормально.Насколько я знаю, я не делаю ничего революционного.Что здесь происходит?