结构体内存拷贝的两种方法
- 前言
- 内容
- 总结
前言
最近看一些代码,发现内存拷贝的两种方式,下面我就来介绍一下两种方式。
内容
首先定义一个结构体processorHead.h:
#pragma pack(1)typedef struct
{short b;int c;long long d;
}DATA;#pragma pack()
第一种方法就是常用的memcpy函数(结构体数组也同样适用):
DATA data;
......
int len = sizeof(data); //数据长度
char *buffer = new char[len];
memcpy(buffer,&data,len); //data为结构体数据
第二种方法:
DATA data;
......
int len = sizeof(data); //数据长度
char *buffer = new char[len];
DATA *param = (DATA *)buffer;
param->b = data.b;
param->c = data.c;
param->d = data.d;
总结
第一种方法可以快速对结构体内容进行复制,而第二种则比较繁琐,但当只需要结构体内某些类型的数值时,第二种方法可以进行方便的选择性的复制,只需要定义新的结构体。