typecasting与memcpy():哪一个更好
typecasting vs memcpy() : which one is better?
假设我有两个变量,如下所示:
typedef struct{
int proc;
int id;
int value;
int last;
} my_struct;
struct my_struct dummy;
int len = 3*sizeof(int);
char my_msg[len];
//Some assignments are done here on those variables
现在,我想通过在上面写my_msg
的内容来擦除dummy
的内容。那么下面哪种方法更好呢?
memcpy(&dummy, my_msg, size);
或
&dummy = (my_struct *) my_msg;
您的类型转换,除了语法有点错误之外,还有未定义的行为,因为您的结构可能由于填充而具有不同的大小,并且具有特定的对齐属性。不要这样做。
两者都不是,您可以使用xdr来序列化&未序列化或类似的
可能的xdr库http://xstream.sourceforge.net/
还有一件事就是用这个来教育自己在C结构中查找由于对齐引起的漏洞
typedef struct{
int proc;
int id;
int value;
int last;
} my_struct;
my_struct dummy;
void main(){
char my_msg[ sizeof(my_struct) ];
memcpy(&dummy, &my_msg, sizeof(my_struct) );
}
当我开发网络程序时,我用C结构传递信息。我可以通过这种方式恢复信息
相关文章:
- 一个互斥锁与多个互斥锁.哪一个更适合线程池?
- 哪一个更适合存储字符、矢量<char>或字符串?
- 试图为命名数组元素创建一个更好的循环
- 在 C 和 C++ 编程中使用哪一个更好?
- 哪一个更好?使用C 代码中的System()函数或使用源代码
- 如何将输入与文件中的内容相匹配?我需要一个更好的解释
- 一个更好的实数生成器
- 对于此语句,这是一个更好的表达
- 这是一个更好的Get成员方法
- 在 c++ 中选择有序映射的最后一个条目时,哪一个更好
- 为可变函数设计一个更好的API
- 重载一个方法只是为了在C++中报告一个更好的错误.有更好的方法吗
- typecasting与memcpy():哪一个更好
- 哪一个更快,为什么?1.阵列2.链接列表.如果我们只想在for循环中迭代并打印它
- c++的一个更好的低级别int交换
- 哪一个更好,自动&&,自动或自动常量
- 哪一个更快?函数调用或条件if语句
- 3D模型移动,找到一个更好的方式来移动3D模型
- 哪一个更快:给一个变量赋相同的值,还是找出它是否已经被设置
- c++表达式——两者中哪一个更快