[討論] 動態記憶體配置是不是常常會出問題啊

作者: jasonokc0220 (天氣晴)   2021-12-05 16:16:36
有時候同一個程式碼明明前一分鐘剛跑完都沒問題,偶爾關掉之後再跑一次就會出現0xc0
000364的錯誤,過一陣子再重跑又沒問題了
上網查了一下好像有人說是編譯器的問題,但我換了別的編譯器也都是有同樣的問題,有
人有這方面的經驗或是實用的方法嗎,雖然說等一陣子莫名又可以跑了,但這種不知何時
會產生的問題還是很讓人不安QQ
作者: ko27tye (好滋好滋)   2021-12-05 16:21:00
這種問題通常是你變數沒初始化 建議你還是貼code上來問
作者: TWkobe (中華柯比)   2021-12-05 16:22:00
會不會哪些地方忘了free, 用valgrind檢查有沒有leak?
作者: Schottky (順風相送)   2021-12-05 16:27:00
基本上都是自己的問題居多而且自己會出的包也不限於動態還是靜態配置
作者: nh60211as   2021-12-05 16:28:00
程式碼寫錯
作者: jasonokc0220 (天氣晴)   2021-12-05 16:49:00
感覺有可能是空間沒釋放掉而堆疊摧毀
作者: lc85301 (pomelocandy)   2021-12-05 17:54:00
你的問題應該是寫了那個吧
作者: firejox (Tangent)   2021-12-05 18:25:00
所以我說那個程式碼呢
作者: b0920075 (Void)   2021-12-05 19:42:00
建議直接把所有檢測記憶體錯誤的選項打開
作者: newking761 (J三小)   2021-12-05 23:21:00
為什麼不先質疑你的code??
作者: Lipraxde (Lipraxde)   2021-12-06 11:21:00
動態記憶體要自己的管理 lifecycles,比較容易出錯XD
作者: peter98 (新兵)   2021-12-06 12:29:00
動態記憶體常錯(X) 寫的動態記憶體常錯(O)
作者: sa074463 (壘包)   2021-12-06 12:53:00
我比較相信是自己寫錯
作者: F04E (Fujitsu)   2021-12-06 13:40:00
呵呵 沒code是要人家擲杯膩
作者: f953024 (=.=a)   2021-12-06 23:10:00
你有想過你到底真正在追求什么呢
作者: cuteSquirrel (松鼠)   2021-12-07 14:36:00
檢查記憶體管理的部分...
作者: james732 (好人超)   2021-12-07 21:13:00
只要分配不要釋放寫起來就會輕鬆很多喔 (X)
作者: descent (「雄辯是銀,沉默是金」)   2021-12-07 23:14:00
編譯器通常是最後才需要懷疑, 一般都是程式有錯這種問題當然不安, 所以要找出根本問題, 修正後會很爽
作者: chchwy (mat)   2021-12-09 10:01:00
動態記憶體"比較容易寫錯" 錯的是寫的人 不是這個機制本身
作者: alan23273850   2021-12-09 10:07:00
是你常出問題 不是動態記憶體配置常出問題 懂?
作者: IhateOGC (我討厭)   2021-12-10 08:24:00
作者: suhorng ( )   2021-12-10 17:30:00
各個 sanitizer 還有 warning 都開一開方便除錯
作者: disabledman (m.m.)   2021-12-11 11:44:00
仔細看CODE,確定自己真的瞭解來龍去派。
作者: qwerasdf6102 (eat_centrum)   2021-12-12 11:59:00
就是因為這樣 才有智慧指標這種東西
作者: Raymond0710 (雷門)   2021-12-12 13:15:00
就一定bug
作者: chaos1993 (棧前小二)   2021-12-16 18:41:00
請先質疑你的code有沒有好好做到記憶體控管
作者: Killercat (殺人貓™)   2021-12-21 12:17:00
跑embedded嗎?如果是real mode的話應該滿常見的...
作者: ManOfSteel (Man Of Steel)   2021-12-23 00:02:00
請問一下K大為什麼embedded的real mode會很常見呢?
作者: h0677870105 (兩個人一起)   2021-12-25 00:29:00
結果發現可以Double free XD
作者: negogoro (尼勾勾肉)   2021-12-26 00:26:00
你有delete或free嗎
作者: friends29 (涼哥哥)   2021-12-26 08:36:00
c++的話 懶人就多用std smart pointer吧
作者: GankTw (GankTw)   2021-12-30 01:21:00
用valgrind 跑看看
作者: whatai (多多)   2021-12-30 17:45:00
embedded system 記憶體太小 32M RAM 算是高規格了大量的動態記憶體分配可能導致記憶體破碎
作者: iwtwin086051 (E_Sung)   2020-01-01 00:42:00
我剛開始寫程式也是常常覺得程式語言有問題但是至今還沒對過一次
作者: closer76 (克樓瑟)   2020-01-04 13:20:00
32MB... 我現在的案子,能給我 32KB 做夢都要偷笑了 XD
作者: Killercat (殺人貓™)   2020-01-08 08:51:00
32M至少有protected mode啦.... real mode還有寫不好的程式直接偷蓋你寫入的記憶體... -_-;所以回答一下上面:所以real mode滿常見這種妖魔鬼怪
作者: henrylin8086 (小木)   2020-01-13 11:47:00
你要不要用smart pointer啊......程式是照你寫的跑,而不是照你想的跑。
作者: howareuuu   2020-01-25 19:08:00
Smart pointer
作者: dzwei (Cout<< *p << \n ;)   2020-02-21 18:57:00
其實,smart pointer也是有些東西要注意比方說 cycler shared poonter
作者: dreamroad (...)   2020-04-01 21:40:00
你沒有厲害到寫出會讓compiler出錯的code ,通常都是自己的問題

Links booklink

Contact Us: admin [ a t ] ucptt.com