#討論 link list mergesort處理多筆資料問題

5月18日 11:18
小弟我用c寫單一鏈結串列mergsort 跟bubble sort 發現當資料量過大(10^6 * 44byte) 前者會記憶體段錯誤,後者可以正常執行。 目前尚未查明原因,但查了些資料好像有提到要將merge用來處理多筆資料要有些眉角,想先問板上各位高手,merge在單一鏈結處理大資料量是不是真的容易出問題?
4
留言 21
文章資訊
6 篇文章10 人追蹤
Logo
這裡是專屬於軟體工程師的版面。
共 21 則留言
目前意識到可能是系統stack爆炸 使用m1 air 16GB
國立中正大學
你是用malloc嗎,40幾mb應該不至於會爆吧
長庚大學
沒理由 merge sort 會記憶體錯誤 但 bubble sort 卻不會吧 你資料是哪裡找的 能給個連結嗎? 我有點好奇 你確定不是你的 merge sort 有寫錯?
大同大學 資訊工程學系
非連續記憶體操作會寫到 segmentation fault 只可能是你 merge sort 寫錯
長庚大學
B3-1 信誓旦旦的說自己跟課本明明寫的一模一樣 但我仔細看了才發現明明就有寫錯 這種狀況我看的可多了 不過如果照你講的那樣 是遞迴太多層導致 segmentation fault 也是有可能啦 尤其不需要遞迴的 bubble sort 就沒有出錯 我之前留言的時候還真就沒想到這個 你可以試試看加大 stack size mac 系統預設的印象中都不是很大 在 mac 上可以使用 ulimit -s [stack size] 進行設定 或是用 ulimit -a 來查看目前設定
B5 你說的確實 🤣 每次都以為是別人的問題 最後是自己在耍白癡 你的提議我會試試看 看怎樣再上來回覆 謝了😌
國立清華大學
你是用Xcode 跑的嗎,試試看gcc?
國立中央大學
gdb 看是哪裡錯啊 沒有錯誤訊息 也沒有程式碼 要我們通靈嗎 你不要寫扣了 去學當pm
大同大學 資訊工程學系
既然你確定是 stack 炸掉 那就用 5 個 element 稍微測試一下 如果真的炸了那就代表你真的有寫錯 沒有就表示你的推論正確 btw 我是 b4
忘記補充一件重要的資訊 10^5筆一下是work的 至於長庚同學的方法 還沒試 我打算回家再用win(也是超過10^6筆才爆)試試