作者jasonokc0220 (天氣晴)
看板C_and_CPP
標題[討論] 動態記憶體配置是不是常常會出問題啊
時間Sun Dec 5 16:16:36 2021
有時候同一個程式碼明明前一分鐘剛跑完都沒問題,偶爾關掉之後再跑一次就會出現0xc0
000364的錯誤,過一陣子再重跑又沒問題了
上網查了一下好像有人說是編譯器的問題,但我換了別的編譯器也都是有同樣的問題,有
人有這方面的經驗或是實用的方法嗎,雖然說等一陣子莫名又可以跑了,但這種不知何時
會產生的問題還是很讓人不安QQ
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.226.218 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1638692198.A.448.html
1F:推 ko27tye: 這種問題通常是你變數沒初始化 建議你還是貼code上來問 12/05 16:21
2F:推 TWkobe: 會不會哪些地方忘了free, 用valgrind檢查有沒有leak? 12/05 16:22
3F:推 Schottky: 基本上都是自己的問題居多 12/05 16:27
4F:→ Schottky: 而且自己會出的包也不限於動態還是靜態配置 12/05 16:28
5F:→ nh60211as: 程式碼寫錯 12/05 16:28
6F:→ jasonokc0220: 感覺有可能是空間沒釋放掉而堆疊摧毀 12/05 16:49
7F:推 lc85301: 你的問題應該是寫了那個吧 12/05 17:54
8F:→ firejox: 所以我說那個程式碼呢 12/05 18:25
9F:推 b0920075: 建議直接把所有檢測記憶體錯誤的選項打開 12/05 19:42
10F:噓 newking761: 為什麼不先質疑你的code?? 12/05 23:21
11F:→ Lipraxde: 動態記憶體要自己的管理 lifecycles,比較容易出錯XD 12/06 11:21
12F:→ peter98: 動態記憶體常錯(X) 寫的動態記憶體常錯(O) 12/06 12:29
13F:推 sa074463: 我比較相信是自己寫錯 12/06 12:53
14F:噓 F04E: 呵呵 沒code是要人家擲杯膩 12/06 13:40
15F:推 f953024: 你有想過你到底真正在追求什么呢 12/06 23:10
16F:→ cuteSquirrel: 檢查記憶體管理的部分... 12/07 14:36
17F:→ james732: 只要分配不要釋放寫起來就會輕鬆很多喔 (X) 12/07 21:13
18F:→ descent: 編譯器通常是最後才需要懷疑, 一般都是程式有錯 12/07 23:14
19F:→ descent: 這種問題當然不安, 所以要找出根本問題, 修正後會很爽 12/07 23:15
20F:推 chchwy: 動態記憶體"比較容易寫錯" 錯的是寫的人 不是這個機制本身 12/09 10:01
21F:推 alan23273850: 是你常出問題 不是動態記憶體配置常出問題 懂? 12/09 10:07
22F:推 IhateOGC: 是 12/10 08:24
23F:推 suhorng: 各個 sanitizer 還有 warning 都開一開方便除錯 12/10 17:30
24F:→ disabledman: 仔細看CODE,確定自己真的瞭解來龍去派。 12/11 11:44
25F:推 qwerasdf6102: 就是因為這樣 才有智慧指標這種東西 12/12 11:59
26F:→ Raymond0710: 就一定bug 12/12 13:15
27F:→ chaos1993: 請先質疑你的code有沒有好好做到記憶體控管 12/16 18:41
28F:推 Killercat: 跑embedded嗎?如果是real mode的話應該滿常見的... 12/21 12:17
29F:推 ManOfSteel: 請問一下K大為什麼embedded的real mode會很常見呢? 12/23 00:02
30F:推 h0677870105: 結果發現可以Double free XD 12/25 00:29
31F:→ negogoro: 你有delete或free嗎 12/26 00:26
32F:推 friends29: c++的話 懶人就多用std smart pointer吧 12/26 08:36
33F:→ GankTw: 用valgrind 跑看看 12/30 01:21
34F:推 whatai: embedded system 記憶體太小 32M RAM 算是高規格了 12/30 17:45
35F:→ whatai: 大量的動態記憶體分配可能導致記憶體破碎 12/30 17:46
36F:→ iwtwin086051: 我剛開始寫程式也是常常覺得程式語言有問題 01/01 00:42
37F:→ iwtwin086051: 但是至今還沒對過一次 01/01 00:42
38F:推 closer76: 32MB... 我現在的案子,能給我 32KB 做夢都要偷笑了 XD 01/04 13:20
39F:→ Killercat: 32M至少有protected mode啦.... real mode還有寫不好的 01/08 08:51
40F:→ Killercat: 程式直接偷蓋你寫入的記憶體... -_-; 01/08 08:51
41F:→ Killercat: 所以回答一下上面:所以real mode滿常見這種妖魔鬼怪 01/08 08:52
42F:推 henrylin8086: 你要不要用smart pointer啊......程式是照你寫的跑 01/13 11:47
43F:→ henrylin8086: ,而不是照你想的跑。 01/13 11:47
44F:推 howareuuu: Smart pointer 01/25 19:08
45F:推 dzwei: 其實,smart pointer也是有些東西要注意 02/21 18:57
46F:→ dzwei: 比方說 cycler shared poonter 02/21 18:59
47F:推 dreamroad: 你沒有厲害到寫出會讓compiler出錯的code ,通常都是自 04/01 21:40
48F:→ dreamroad: 己的問題 04/01 21:40