看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) win10 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) vs 2015 問題(Question): 這個程式是要把餵入的資料轉成二元樹存起來 我程式寫到一個段落偵錯的時候 發現第28行 第一次malloc是成功的 但第二次malloc就失敗了 它顯示堆積已損毀 想請問一下程式是哪裡出錯了呢? 餵入的資料(Input): (-,(/,(*,16,(+,24,13)),9),10) 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/e35UfNCP -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.166.236.64 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1494639040.A.D21.html
sunneo: line 33: root->data[1] = '/0'; 05/13 11:27
sunneo: heap壞掉,就要檢查對malloc的指標寫入的操作 05/13 11:28
sunneo: data有[3],operatorr有[5],operatorr沒有初始化 05/13 11:30
sunneo: 所以你的strcpy應該有蠻大機會複製超過3個byte 05/13 11:32
hunandy14: 26行沒有歸零 32行有機會複製到 垃圾 05/13 12:12
hunandy14: 不過主因是31不正確的操作(沒補結束符) 05/13 12:13
hunandy14: 然後就是樓上說的複製超過 05/13 12:13
hunandy14: 71行 嘗試把一個 長度超過3的複製進去 05/13 12:14
hunandy14: 33行操作是錯誤的 直接 = 0 就好 05/13 12:18
tinlans: 標題堆疊,內文堆積 05/14 05:01
mario86123: 成功了 感謝~ 05/14 08:28
Bencrie: 堆疊損毀跟堆積損毀是不一樣的東西啊啊啊 05/16 22:49