我正在分析我編寫的遊戲的代碼,我想知道下面的代碼片段如何導致每次增加4kb的堆(我正在分析Xcode的Heapshot分析)執行:fread引起的泄漏
u8 WorldManager::versionOfMap(FILE *file)
{
char magic[4];
u8 version;
fread(magic, 4, 1, file); <-- this is the line
fread(&version,1,1,file);
fseek(file, 0, SEEK_SET);
return version;
}
根據探查突出顯示的行每次函數被調用時,內存這是從未公佈分配的內存4.00Kb與malloc
。這個事情似乎在代碼周圍的fread
的其他調用發生,但這是最eclatant之一。
有什麼小事我失蹤了?這是我不應該關心的內部事物嗎?
就像一個筆記:我在iPhone上分析它,它被編譯爲版本(-O2
)。
當你把它改成fread(magic,1,4,file)時會發生什麼;'? – Yahia 2012-04-14 17:25:34
您是否檢查過讀取錯誤(例如'ferror(file)')? – Beta 2012-04-14 17:27:50
另一點:檢查'fread'調用的結果! – Yahia 2012-04-14 17:27:58