推 Hazukashiine: en.cppreference.com/w/cpp/container/array/at 04/16 03:00
→ Chikei: valgrind ? 04/16 03:03
→ Sylveon: try -fsanitize=address ? 04/16 04:38
推 LPH66: vs 應該是沒有 -fsanitize 的選項的樣子, 可能要靠外部工具 04/16 07:46
→ MOONY135: VS有的話我也想知道... 04/16 08:55
推 Ommm5566: 印象中google的gtest和benchmark偶爾可以攔截到這種錯誤 04/16 09:26
→ Ommm5566: 話說回來說這是你的問題 04/16 09:26
→ Ommm5566: C++提供很多工具,寫程式本來就是一直在做取捨 04/16 09:27
→ Ommm5566: 不做檢查程式碼會少,速度會快 04/16 09:27
→ Ommm5566: 每次執行檢查如果要做檢查,速度就是慢一倍 04/16 09:27
→ Ommm5566: 不然你以為為什麼debug mode遠遠比release mode慢 04/16 09:27
→ Ommm5566: 陣列傳進function還是要給size 連這都不檢查要怪誰 04/16 09:29
推 kwpn: 改用vector 呼叫at? 04/16 09:44
→ MOONRAKER: 這個雙黃線太爛了,開到對面居然不會把我彈回來。 04/16 10:32
→ MOONRAKER: (設計對白) 04/16 10:32
謝謝各位大大,at看起來滿符合要求的,之後會盡量改用at取。
我用 -fsanitize=address也得到一些錯誤回饋,謝謝各位。
我了解這是我程式設計的問題,我是希望能在已經確定我產生存取越界的時候,
能比較快地找到問題點,我的想法是,既然教授的系統可以做到這件事情,
沒有理由那些由大公司或是g++等編譯或是其他外掛程式沒有辦法做到
※ 編輯: moebear (140.113.91.189), 04/16/2017 13:25:24
推 Ommm5566: at就是每次存取會檢查 你說的大公司系統也是 04/16 13:53
→ tuyutd0505: 通常教授的系統會抓這個都是要防止緩衝區溢位攻擊 04/16 13:58
→ tuyutd0505: 就是怕有學生黑他 04/16 13:58
→ er230059: 教授的server每天都有人在亂try吧XD 保護當然要做好 04/16 14:21