作者mario86123 (mario86123)
看板C_and_CPP
標題[問題] 堆疊已損毀
時間Sat May 13 09:30:37 2017
開發平台(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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1494639040.A.D21.html
1F:→ sunneo: line 33: root->data[1] = '/0'; 05/13 11:27
2F:→ sunneo: heap壞掉,就要檢查對malloc的指標寫入的操作 05/13 11:28
3F:→ sunneo: data有[3],operatorr有[5],operatorr沒有初始化 05/13 11:30
4F:→ sunneo: 所以你的strcpy應該有蠻大機會複製超過3個byte 05/13 11:32
5F:→ hunandy14: 26行沒有歸零 32行有機會複製到 垃圾 05/13 12:12
6F:→ hunandy14: 不過主因是31不正確的操作(沒補結束符) 05/13 12:13
7F:→ hunandy14: 然後就是樓上說的複製超過 05/13 12:13
8F:→ hunandy14: 71行 嘗試把一個 長度超過3的複製進去 05/13 12:14
9F:→ hunandy14: 33行操作是錯誤的 直接 = 0 就好 05/13 12:18
10F:→ tinlans: 標題堆疊,內文堆積 05/14 05:01
11F:→ mario86123: 成功了 感謝~ 05/14 08:28
12F:推 Bencrie: 堆疊損毀跟堆積損毀是不一樣的東西啊啊啊 05/16 22:49