1. 问题呈现
假设有一个内存空间,buf[200],我们对其用指针赋值:
unsigned long long item = 100;
*(unsigned long long *)buf = item;
看似没问题,但是实际中移植性比较差,当我在64位的ubuntu中运行此段代码是没有问题的。但是当我们把此代码在32位的嵌入式系统中运行,报 < Bus error> 的错误。
2. 解决
当遇到此问题时,memcpy是个好的选择。
假设有一个内存空间,buf[200],我们对其用指针赋值:
unsigned long long item = 100;
*(unsigned long long *)buf = item;
看似没问题,但是实际中移植性比较差,当我在64位的ubuntu中运行此段代码是没有问题的。但是当我们把此代码在32位的嵌入式系统中运行,报 < Bus error> 的错误。
当遇到此问题时,memcpy是个好的选择。