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