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

看板C_and_CPP (C/C++)作者 (天氣晴)時間3年前 (2021/12/05 16:16), 編輯推噓20(22224)
留言48則, 38人參與, 最新討論串1/1
有時候同一個程式碼明明前一分鐘剛跑完都沒問題,偶爾關掉之後再跑一次就會出現0xc0 000364的錯誤,過一陣子再重跑又沒問題了 上網查了一下好像有人說是編譯器的問題,但我換了別的編譯器也都是有同樣的問題,有 人有這方面的經驗或是實用的方法嗎,雖然說等一陣子莫名又可以跑了,但這種不知何時 會產生的問題還是很讓人不安QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.39.226.218 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1638692198.A.448.html

12/05 16:21, 3年前 , 1F
這種問題通常是你變數沒初始化 建議你還是貼code上來問
12/05 16:21, 1F

12/05 16:22, 3年前 , 2F
會不會哪些地方忘了free, 用valgrind檢查有沒有leak?
12/05 16:22, 2F

12/05 16:27, 3年前 , 3F
基本上都是自己的問題居多
12/05 16:27, 3F

12/05 16:28, 3年前 , 4F
而且自己會出的包也不限於動態還是靜態配置
12/05 16:28, 4F

12/05 16:28, 3年前 , 5F
程式碼寫錯
12/05 16:28, 5F

12/05 16:49, 3年前 , 6F
感覺有可能是空間沒釋放掉而堆疊摧毀
12/05 16:49, 6F

12/05 17:54, 3年前 , 7F
你的問題應該是寫了那個吧
12/05 17:54, 7F

12/05 18:25, 3年前 , 8F
所以我說那個程式碼呢
12/05 18:25, 8F

12/05 19:42, 3年前 , 9F
建議直接把所有檢測記憶體錯誤的選項打開
12/05 19:42, 9F

12/05 23:21, 3年前 , 10F
為什麼不先質疑你的code??
12/05 23:21, 10F

12/06 11:21, 3年前 , 11F
動態記憶體要自己的管理 lifecycles,比較容易出錯XD
12/06 11:21, 11F

12/06 12:29, 3年前 , 12F
動態記憶體常錯(X) 寫的動態記憶體常錯(O)
12/06 12:29, 12F

12/06 12:53, 3年前 , 13F
我比較相信是自己寫錯
12/06 12:53, 13F

12/06 13:40, 3年前 , 14F
呵呵 沒code是要人家擲杯膩
12/06 13:40, 14F

12/06 23:10, 3年前 , 15F
你有想過你到底真正在追求什么呢
12/06 23:10, 15F

12/07 14:36, 3年前 , 16F
檢查記憶體管理的部分...
12/07 14:36, 16F

12/07 21:13, 3年前 , 17F
只要分配不要釋放寫起來就會輕鬆很多喔 (X)
12/07 21:13, 17F

12/07 23:14, 3年前 , 18F
編譯器通常是最後才需要懷疑, 一般都是程式有錯
12/07 23:14, 18F

12/07 23:15, 3年前 , 19F
這種問題當然不安, 所以要找出根本問題, 修正後會很爽
12/07 23:15, 19F

12/09 10:01, 3年前 , 20F
動態記憶體"比較容易寫錯" 錯的是寫的人 不是這個機制本身
12/09 10:01, 20F

12/09 10:07, 3年前 , 21F
是你常出問題 不是動態記憶體配置常出問題 懂?
12/09 10:07, 21F

12/10 08:24, 3年前 , 22F
12/10 08:24, 22F

12/10 17:30, 3年前 , 23F
各個 sanitizer 還有 warning 都開一開方便除錯
12/10 17:30, 23F

12/11 11:44, 3年前 , 24F
仔細看CODE,確定自己真的瞭解來龍去派。
12/11 11:44, 24F

12/12 11:59, 3年前 , 25F
就是因為這樣 才有智慧指標這種東西
12/12 11:59, 25F

12/12 13:15, 3年前 , 26F
就一定bug
12/12 13:15, 26F

12/16 18:41, , 27F
請先質疑你的code有沒有好好做到記憶體控管
12/16 18:41, 27F

12/21 12:17, , 28F
跑embedded嗎?如果是real mode的話應該滿常見的...
12/21 12:17, 28F

12/23 00:02, , 29F
請問一下K大為什麼embedded的real mode會很常見呢?
12/23 00:02, 29F

12/25 00:29, , 30F
結果發現可以Double free XD
12/25 00:29, 30F

12/26 00:26, , 31F
你有delete或free嗎
12/26 00:26, 31F

12/26 08:36, , 32F
c++的話 懶人就多用std smart pointer吧
12/26 08:36, 32F

12/30 01:21, , 33F
用valgrind 跑看看
12/30 01:21, 33F

12/30 17:45, , 34F
embedded system 記憶體太小 32M RAM 算是高規格了
12/30 17:45, 34F

12/30 17:46, , 35F
大量的動態記憶體分配可能導致記憶體破碎
12/30 17:46, 35F

01/01 00:42, , 36F
我剛開始寫程式也是常常覺得程式語言有問題
01/01 00:42, 36F

01/01 00:42, , 37F
但是至今還沒對過一次
01/01 00:42, 37F

01/04 13:20, , 38F
32MB... 我現在的案子,能給我 32KB 做夢都要偷笑了 XD
01/04 13:20, 38F

01/08 08:51, , 39F
32M至少有protected mode啦.... real mode還有寫不好的
01/08 08:51, 39F

01/08 08:51, , 40F
程式直接偷蓋你寫入的記憶體... -_-;
01/08 08:51, 40F

01/08 08:52, , 41F
所以回答一下上面:所以real mode滿常見這種妖魔鬼怪
01/08 08:52, 41F

01/13 11:47, , 42F
你要不要用smart pointer啊......程式是照你寫的跑
01/13 11:47, 42F

01/13 11:47, , 43F
,而不是照你想的跑。
01/13 11:47, 43F

01/25 19:08, , 44F
Smart pointer
01/25 19:08, 44F

02/21 18:57, , 45F
其實,smart pointer也是有些東西要注意
02/21 18:57, 45F

02/21 18:59, , 46F
比方說 cycler shared poonter
02/21 18:59, 46F

04/01 21:40, , 47F
你沒有厲害到寫出會讓compiler出錯的code ,通常都是自
04/01 21:40, 47F

04/01 21:40, , 48F
己的問題
04/01 21:40, 48F
文章代碼(AID): #1Xh7LcH8 (C_and_CPP)
文章代碼(AID): #1Xh7LcH8 (C_and_CPP)