memcpy内存拷贝函数
强烈推荐,安全性、通用性更高 下面以组装double类型为例:
#include <string.h> //包含memcpy函数
//假设recv_buf是接收缓冲区,已经存好8字节原始数据
unsigned char recv_buf[8] = {..........};
double result;
//关键:将8字节内存拷贝到double变量中
memcpy(&result,recve_buf,sizeof(double));指针强制转换
简洁,但需要注意内存对齐
[!内存对齐] 如:double的对齐要求通常是8字节,既内存地址必须是8的整数倍
当
recv_buf数组的地址不是8的整数倍时,就会触发内存对齐错误,可能会导致程序崩溃或者数据读取异常
依旧是以double类型的组装为例:
//假设recv_buf是接收缓冲区,已经存好8字节原始数据
unsigned char recv_buf[8] = {..........};
double result;
//关键:强制转换指针类型并取值
result = *((double *)recv_buf);
//提醒:部分平台可能存在内存对齐问题,强烈推荐使用更通用的memcpy