代码:
union foo
{
char c;
int i;
};
void func(void * src)
{
union foo dest;
memcpy(&dest, src, sizeof(union foo)); //here
}
如果我func()
这样打电话:
int main()
{
char c;
int i;
func(&c);
func(&i);
return 0;
}
在调用func(&c)
中,大小c
小于sizeof(union foo)
,这可能很危险,对吧?
线memcpy
是否正确?如果没有,如何解决?
我想要的是一个安全的调用来memcpy
复制一个void *
指向a 的指针union
。
一点背景:这是从一个非常复杂的函数中提取的,func()
包含void *
参数的签名不在我的控制范围内。当然,该示例没有任何用处,那是因为我删除了所有与提供最少代码示例无关的代码。