[問題] 使用 map 導致 Segmentation fault

作者: mizuyoru3423 (水夜mizuyoru)   2019-11-03 18:35:06
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux (Windows Subsystem for Linux, Ubuntu 18.04)
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
編譯器:GCC 7.4.0
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)

問題(Question):
資料 insert 完後,需要用 find 找資料,但出現錯誤,且錯誤並非每次都出現
錯誤位置: 第31行,find function
餵入的資料(Input):
./main.cpp order.json info.txt
order.json: https://pastebin.com/FBTn9rRq
info.txt: https://pastebin.com/wAguCmjL
預期的正確結果(Expected Output):
2
0
0
1
錯誤結果(Wrong Output):
執行階段: Segmentation fault (core dumped)
gdb debug: 沒有錯誤
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
http://codepad.org/soCIfu0e
補充說明(Supplement):
這個錯誤很奇怪,有時候出現,有時候卻沒有,gdb也找不到錯誤
作者: b0920075 (Void)   2019-11-03 18:54:00
分析 core dump咧?
作者: mizuyoru3423 (水夜mizuyoru)   2019-11-03 20:40:00
已解決,說起來有點慚愧,只是我一開始的 order 指標忘了new 而已
作者: mizuyoru (愛理柏木由衣)   2019-11-03 21:29:00
我還以為看到自己
作者: achicn3 (Sher)   2019-11-04 01:07:00
恭喜兩位可以結婚了
作者: mizuyoru (愛理柏木由衣)   2019-11-04 10:23:00
這麼中二的名字沒想到除了我以外還有其他人會用
作者: playgame555 (我不雷)   2019-11-04 18:30:00
不求甚解的路過 以前遇過類似的問題(不是map)在main下面加一個夠大的矩陣 int big_array[4096];之類的就會動了 我不知道為啥 推測是用pointer newclass的時候 沒有要到該有的空間 等到call item的時候 pointer指到程式外面去了BTW我把Code載下來用GDB執行還真的不會掛掉= =不用GDB的時候大概3次死1次
作者: Lipraxde (Lipraxde)   2019-11-04 21:29:00
用 valgrind 看看吧,一些基本的錯誤很容易就可以抓出來的
作者: Bencrie   2019-11-05 01:21:00
valgrind 之外還有 gcc 的 -fsanitize=address

Links booklink

Contact Us: admin [ a t ] ucptt.com