我有一個用於修改pdf文件內容的應用程序。一旦做出所需的更改,我將保存該文件並退出應用程序。在這個過程中,我想清除已分配給PDF文件的內存。代碼如下:釋放內存時崩潰
for (i32 i = 0; i < job_state->PDF_IList_len; i++) {
if(IList[i].PIL_ImageData.PDH_DataPtr.PDH_PathName)
free (IList[i].PIL_ImageData.PDH_DataPtr.PDH_PathName);
if(IList[i].PIL_DependentImages)
free (IList[i].PIL_DependentImages);
}
job_state->PDF_ImageList = NULL;
job_state->PDF_context = NULL;
free (IList);
job_structure是一個數據結構來保存有關該文件的信息。 PDH_Pathname
是pdf的詳細信息存儲的臨時目錄。
我的應用程序崩潰始終在
free (IList[i].PIL_ImageData.PDH_DataPtr.PDH_PathName);
我注意到,每當它崩潰,免費(IList[i].PIL_ImageData.PDH_DataPtr.PDH_PathName)
價值無法評估(這就是調試器說的話)。
如果for循環被註釋掉,則沒有觀察到碰撞。請讓我知道可能是什麼問題。
您可以發佈您在哪裏以及多少次分配這些資源:/ – codekiddy 2012-01-13 05:16:41
您已標記此C++,但代碼調用了'free' :( – 2012-01-13 05:21:11
對不起。這部分代碼位於C – Darzen 2012-01-13 05:22:29