看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
hn12404988: 不好意思,感覺好像來亂的,問題我剛剛發現在哪了 02/24 17:18
hn12404988: 基本上就是太貪心,pointer被移來移去,出現nullptr 02/24 17:20
hn12404988: 自己沒注意到 02/24 17:20
ilms49898723: 有補上結果給推 02/25 08:52