[問題] 記憶體segfault問題

看板C_and_CPP作者 (Willy)時間7年前 (2017/02/24 16:32), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
開發平台(Platform): Linux 編譯器: GCC, g++ 額外使用到的函數庫(Library Used): std::thread, valgrind 程式碼: 出問題的是出在這行: https://github.com/hn12404988/dalahast/blob/master/dalahast/tool/ss_tool.cpp#L257 程式碼都還沒下註解,很亂,建議直接聽我下面描述就好 如果真的要看程式碼的話,以下是thread流程 先這個程式被呼叫 https://github.com/hn12404988/dalahast/blob/master/server/topology/init.cpp#L115 呼叫到這行 https://github.com/hn12404988/dalahast/blob/master/dalahast/tool/iss_tool.cpp#L172 再呼叫到上面出問題的那行 問題(Question): 有一個程式,其中一段是std::map使用operator[] 來創立記憶體 會segfault,但系統不會顯示,而是直接掛掉,要再去/var/log/message才看到 更奇怪的是如果使用valgrind來啟動:valgrind --leak-check=yes --log-file=vglog 程式就會順利執行,std::map就會順利完成 另外雖然這是multi-thread環境,但該std::map確定只會由自己thread使用 所以看來看去,就只是一段簡單的map[]而已,就算換成map.emplace問題也是一樣 請問大家有甚麼想法讓我debug有新的方向嗎? 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.16.181 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1487925152.A.374.html

02/24 17:18, , 1F
不好意思,感覺好像來亂的,問題我剛剛發現在哪了
02/24 17:18, 1F

02/24 17:20, , 2F
基本上就是太貪心,pointer被移來移去,出現nullptr
02/24 17:20, 2F

02/24 17:20, , 3F
自己沒注意到
02/24 17:20, 3F

02/25 08:52, , 4F
有補上結果給推
02/25 08:52, 4F
文章代碼(AID): #1Oh--WDq (C_and_CPP)