代码:
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 *参数的签名不在我的控制范围内。当然,该示例没有任何用处,那是因为我删除了所有与提供最少代码示例无关的代码。