[問題] mergesort遇到seg fault

看板C_and_CPP作者 (Alan君)時間6年前 (2018/07/01 18:20), 6年前編輯推噓4(409)
留言13則, 6人參與, 6年前最新討論串1/2 (看更多)
這是小弟的程式碼 http://codepad.org/wkpNQd97 我參考許多網路上的mergesort做法,但是其實的沒有找到關於指標陣列的做法,於是自 己寫了一個 程式的目標是把隨機生成的1000萬組字串做排序 但是最後出現了seg fault 這是以下的debugger的提示 https://i.imgur.com/uIHkVO0.jpg
我有試過把1000萬筆改成小於100筆,就成功了! 所以不知道是出現了什麼問題QQ 會不會是太多筆資料嗎? =========================== 很感謝有這麼多人提供意見和協助我QQ 目前是完全debug成功了 所以想說統一在貼文中表達感謝! 資料跑出來,前10萬筆和後10萬筆都沒有出錯! 解決過程: 1.的確像版上各位大大所說,stack爆了,主要是爆在剛進merge的時候,宣告的leftsub 和rightsub,改成使用heap,就解決了(感謝cphe大大的回應!) 2.很抱歉,我沒有注意到63行,sizeof的部份應該要宣告(char*) 3.我會好好注意free的部份,我有把每個不用的malloc過的東西都free掉了~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.217.192.117 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1530440405.A.1CD.html

07/01 18:38, 6年前 , 1F

07/01 18:38, 6年前 , 2F
序法%28merge-sort%29
07/01 18:38, 2F

07/01 20:39, 6年前 , 3F
stack爆了吧 看起來是這樣
07/01 20:39, 3F

07/01 20:39, 6年前 , 4F
你在 linux 下嗎? 要不要開 address sanitizer 查一下?
07/01 20:39, 4F

07/01 20:44, 6年前 , 5F
聽描述感覺是stack炸掉+1
07/01 20:44, 5F

07/01 20:49, 6年前 , 6F
就算 Max_data 調 100,valgrind 還是有報 85 行有非法
07/01 20:49, 6F

07/01 20:49, 6年前 , 7F
寫入,不過在忙別的沒空細看。
07/01 20:49, 7F

07/01 20:58, 6年前 , 8F
只是 stack 爆掉的話可以改成動態配置。
07/01 20:58, 8F

07/01 21:09, 6年前 , 9F
你解釋一下為什麼 63 行 malloc() 裡面是用 sizeof(char)
07/01 21:09, 9F

07/01 21:09, 6年前 , 10F
去乘以 Max_data。
07/01 21:09, 10F

07/01 21:40, 6年前 , 11F
東西要了沒用也不free,malloc不保證一定要的到空間
07/01 21:40, 11F

07/02 00:36, 6年前 , 12F
100筆跑出來是對的嗎?
07/02 00:36, 12F

07/02 00:39, 6年前 , 13F
上面說的sizeof型態先改對看看
07/02 00:39, 13F
※ 編輯: a0928855286 (49.217.192.117), 07/02/2018 23:58:31 ※ 編輯: a0928855286 (49.217.192.117), 07/02/2018 23:59:24
文章代碼(AID): #1REAhL7D (C_and_CPP)
文章代碼(AID): #1REAhL7D (C_and_CPP)