作者mizuyoru3423 (水夜mizuyoru)
看板C_and_CPP
標題[問題] 使用 map 導致 Segmentation fault
時間Sun Nov 3 18:35:06 2019
開發平台(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也找不到錯誤
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.51.210 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1572777310.A.E39.html
1F:推 b0920075: 分析 core dump咧? 11/03 18:54
我網路上看了很久,我還是不知道 core dump的位置在哪,我只動了 ulimit -c unlimited,還需要動什麼嗎
※ 編輯: mizuyoru3423 (111.251.51.210 臺灣), 11/03/2019 19:02:53
2F:→ mizuyoru3423: 已解決,說起來有點慚愧,只是我一開始的 order 指11/03 20:40
3F:→ mizuyoru3423: 標忘了new 而已11/03 20:40
4F:→ mizuyoru: 我還以為看到自己11/03 21:29
我當時也想用這個帳號註冊,原來就是你
5F:推 achicn3: 恭喜兩位可以結婚了11/04 01:07
※ 編輯: mizuyoru3423 (111.251.51.210 臺灣), 11/04/2019 09:19:38
6F:→ mizuyoru: 這麼中二的名字沒想到除了我以外還有其他人會用11/04 10:23
7F:推 playgame555: 不求甚解的路過 以前遇過類似的問題(不是map)11/04 18:30
8F:→ playgame555: 在main下面加一個夠大的矩陣 int big_array[4096];11/04 18:31
9F:→ playgame555: 之類的就會動了 我不知道為啥 推測是用pointer new11/04 18:32
10F:→ playgame555: class的時候 沒有要到該有的空間 等到call item的11/04 18:33
11F:→ playgame555: 時候 pointer指到程式外面去了11/04 18:34
12F:→ playgame555: BTW我把Code載下來用GDB執行還真的不會掛掉= =11/04 18:36
13F:→ playgame555: 不用GDB的時候大概3次死1次11/04 18:37
www,其實實際原因也不是map,只是我的class就只有一個data menber而已
14F:→ Lipraxde: 用 valgrind 看看吧,一些基本的錯誤很容易就可以抓出11/04 21:29
15F:→ Lipraxde: 來的11/04 21:29
看起來蠻好玩的,改天試試
※ 編輯: mizuyoru3423 (111.251.51.210 臺灣), 11/04/2019 22:55:03
※ 編輯: mizuyoru3423 (111.251.51.210 臺灣), 11/04/2019 22:56:30
※ 編輯: mizuyoru3423 (111.251.51.210 臺灣), 11/04/2019 22:58:56
16F:推 Bencrie: valgrind 之外還有 gcc 的 -fsanitize=address 11/05 01:21