1
我试图从deque复制一个错误对象的内容,但是当我检查复制的内容时,它是不正确的。正确使用memcpy in C
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_OBJECT的第二个指针,并使用memcpy到 将marker的内容复制到marker2中,那么一切正常。只有当我 试图将标记的内容复制到发生错误 的外部对象时。
有人会这么好,指出我做错了什么?
你的代码看起来没问题。也许你在其他地方搞乱了你的堆。考虑使用[valgrind](http://valgrind.org/) – 2013-05-13 23:34:28
确实,它看起来更像是'object'的内存缓冲区没有被正确分配或类似的东西。 – 2013-05-13 23:36:37
你如何检查标记,对象和marker2的内容?在调试器中?也许你可以发布内存转储。你看er_copy()'返回前后的对象内容吗? – 2013-05-13 23:38:49