[問題] 關於堆積損毀的問題

看板C_and_CPP (C/C++)作者 (c++新手)時間14年前 (2011/10/25 21:23), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vsC++ 2010 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 使用free()造成堆積損毀的樣子.... 餵入的資料(Input): (((a+b)*(c/d))+f) ((a/b)*((c+d()()()()()())()()*e)) (((a+b)+c)))) 預期的正確結果(Expected Output): 假如把pop裡面的free()那行去掉之後就正常 錯誤結果(Wrong Output): 其中幾個數據亂掉 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/xI5iQwRY 補充說明(Supplement): 這是一個程式要把讀到的數學式子 判斷左括弧不等於又括弧時 就是有問題 假如相等的話 就是matching正常 然後要顯示那些配對的index 我是把遇到左括弧時push進stack 遇到右括弧時pop出來 假如pop時stack已經沒了話 或是數學式跑完top不等於NULL時 程式寫完之後 加上free()的狀態 有時編譯正常 有時失敗 爬過文似乎是heap在慢慢崩壞.... 爬文結果好像有人也有遇到這個問題 但是我的值沒有隨便給 應該也不會爆掉 不知道為什麼只要free之後就會有問題 可以請強者們幫我看看嗎? 感激不盡!!!!!!!!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 74.115.6.51

10/25 22:53, , 1F
你的dangling&parentheses 分配的空間只夠你[0]而已
10/25 22:53, 1F

10/25 23:03, , 2F
感謝您!! 問題解決了 但是我有一個疑問為什麼free()去掉之後
10/25 23:03, 2F

10/25 23:04, , 3F
即使沒有改array大小 也是正常呢? 如果分配空間不足應該會所
10/25 23:04, 3F

10/25 23:06, , 4F
(,)裡面的值都有問題 但是他大多只有一個數值有問題 因為我
10/25 23:06, 4F

10/25 23:06, , 5F
是新手 所以問的問題可能有點笨或抓不到重點 感謝您!!!!
10/25 23:06, 5F
文章代碼(AID): #1EfhX8Lt (C_and_CPP)
文章代碼(AID): #1EfhX8Lt (C_and_CPP)