复制到void*指针

Yak*_*kov 2 c copy void-pointers

我有一个函数getData(void* data) 应该复制到数据一些内部计算值,例如int r = getRadius(); r应该被复制到数据,并且是从函数getData返回的这种方式,这是正确的方法吗?我尝试过,*(int*)data = r; 但我不确定这是一个最好的解决方案.

dbe*_*eer 7

如果您确定void指针引用的内存是int,那么您可以放心

*(int *)data = r;
Run Code Online (Sandbox Code Playgroud)

然而,更好的通用解决方案是:

memcpy(data, &r, sizeof(int));
Run Code Online (Sandbox Code Playgroud)

这样您就不必担心字节对齐或其他潜在的陷阱.