我试图从双端队列中复制错误对象的内容,但是什么时候 我检查复制的内容,这是不正确的。
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。
如果我创建一个指向ER_OBJECT的第二个指针,名为marker2,并使用memcpy 将标记的内容复制到marker2,一切正常。只有在我的时候 尝试将标记的内容复制到外部对象发生错误 发生。
有人会如此善意地指出我做错了吗?
答案 0 :(得分:1)
不幸的是,发布的代码是正确的。
我说“不幸”,因为这意味着问题出在程序的其他地方。我建议使用其他工具,例如Mudflap和Valgrind。
-fmudflap
进行编译。这需要安装mudflap库。这些工具在某种程度上有意重叠,但是有一些错误,只有两个工具中的一个会捕获。