我试图从deque复制错误对象的内容,但是当
我检查复制的内容,它是不正确的。
typedef struct ER_OBJECT
{
uint8 error_type;
union
{
uint32 number;
char *message;
} error;
} ER_OBJECT;
void er_copy(DE_LIST *deque, ER_OBJECT *object)
{
ER_OBJECT *marker;
marker = er_get_first_object(deque);
memcpy(object, marker, sizeof(*marker));
}
包括
er_get_first_object
功能在内的所有功能我可以检查标记的内容,这是正确的。这让我相信问题出在memcpy身上。
如果我创建第二个指向名为marker2的ER_对象的指针,并使用memcpy
将marker的内容复制到marker2中,一切正常。只有当我
试图将标记的内容复制到出现错误的外部对象
发生。
有人能指出我做错了什么吗?
最佳答案
不幸的是,发布的代码是正确的。
我说“不幸”是因为这意味着问题出在你程序的其他地方。我建议使用其他工具,如Mudflap和Valgrind。
如果使用GCC,请使用-fmudflap
编译。这需要安装mudflap库。
和瓦尔格林一起跑。
这些工具在目的上确实有些重叠,但有些错误只有两个工具中的一个会发现。
关于c - 在C中正确使用memcpy,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16532799/