嘗試malloc一些內存時出現奇怪的錯誤。我有一個指向「malloced」結構的指針,我想要另一個結構體。所以我再次調用malloc,malloc返回的指針指向一個空的空間 - 到目前爲止沒關係。然後我memset分配的區域和memset覆蓋另一個仍在使用的變量。 內存中的第一個結構在0x1643c98中,給出的第二個指針是0x1643bf8,但是我想malloc 200字節。代碼:Cygwin malloc覆蓋堆中的另一個內存
data_t *data = get_head_data();
int length = data->head.length;
data_t *new_data = malloc(length);
memset(new_data, 0x00, length); // this line override the perivously malloced data
//some other operation
我使用窗口xp(32位)和cygwin,與gcc 3.4.4。處理器是英特爾酷睿2雙核處理器。 任何想法什麼是錯的或應該是什麼問題? 在此先感謝。
編輯:對不起,我是一個完全錯誤的軌道。有一個錯誤的功能,這是免費的意外。當我稍後調用malloc時,以前的地址在內存中,我認爲它是有效的,但它是免費的()。 謝謝你的所有建議!
請修改您的代碼或發佈更多內容:我們不知道該memset調用中的結果是什麼。 – Mat
memset中的結果參數和new_data指針應該是相同的指針嗎? – thiton
是的,對不起,我打錯了。 – hcpeter