【发布时间】:2011-06-15 12:48:57
【问题描述】:
我有一个函数,我试图从大量数据中获取 16 位。我在 Solaris 机器上运行此代码,并且可以在没有警告或错误的情况下进行编译。但是,当我运行此代码时,每当它到达我取消对指针的尊重的部分时,我都会立即收到总线错误。代码如下所示:
void find_info(unsigned char* packet) {
int offset = 9;
uint16_t short_value = *(uint16_t*)(packet+offset);
}
当我试图取消引用“数据包+偏移”指针以缩短时,会发生总线错误。事实上,我知道数据包 [offset] 和数据包 [offset+1] 处有数据。在 Linux 和 Cygwin 上,此代码运行良好。据我所知,我没有做任何革命性的事情。这是怎么回事?
【问题讨论】: