看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 我在一個class的函式成員中動態配至一個陣列來用,程式卻在執行到delete時, windows跳出發生問題必須關閉的視窗。 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) int MyClass::Save() { char *DataSpace; unsigned int Length; Length = 0x40000; // Create array DataSpace = new char[Length]; system("PAUSE"); // Try to write data to array DataSpace[0] = 0x00; system("PAUSE"); // Delete array delete [] DataSpace; system("PAUSE"); return (0); } 補充說明(Supplement): 在程式中class有多個成員函式(如Save()、Lode()...)用了類似的方式創造一個暫時 的陣列空間,並且都在離開函式時釋放記憶體空間,應該是不會產生重複new/delete 的問題。 如果main中只呼叫了xxx.Save()不會有問題,但如果先呼叫xxx.Load()再呼叫xxx.Save() 則會跳出錯誤。 請問如果問題發生在delete階段,要怎麼判斷是哪個環節出了問題呢?debug好像看不出 什麼有用的資訊。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.72.212.239 ※ 編輯: icetofux 來自: 211.72.212.239 (12/20 17:48)
anotherday:還是得看程式碼才看的出來 12/20 18:22
icetofux:我發現問題了,先前的函式呼叫不小心操作到配置的空間 12/20 18:27
icetofux:之外,當下沒爆,接下來呼叫Save就爆了,好蠢... 12/20 18:28