作者moebear (萌熊)
看板Programming
標題[問題] 如何發現存取越界? c/c++(V.S.)
時間Sun Apr 16 01:30:51 2017
各位好,最近有門課在用judge system,發現我常常會有存取越界的問題
但是在我的編譯軟體(visual studio 2015)上面會偵測不到這個問題,
我也有用系上的工作站(linux環境),直接用g++編譯後執行的話也沒有顯示存取越界
我想 既然judge可以找到這個問題
那在編譯軟體上面應該也可以......吧?
想問問看有沒有什麼方法可以幫助我找到哪邊有存取越界。
舉例來說:
unsigned long long a[3]={1,2,3};
b=b/a[-1];
今天遇到的大概是這樣的情況,我去追蹤,發現a是一個很大的正數,
在過程中是看不到他造成的影響,debug過程也沒有警告。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.91.189
※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1492277454.A.12C.html
※ moebear:轉錄至看板 C_and_CPP 04/16 02:52
→ MOONRAKER: 試一下看有沒有std::array好用 218.161.46.90 04/16 10:28
→ MOONRAKER: 然後每次取元素不要用a[k] 要用a.at(k) 218.161.46.90 04/16 10:28
→ MOONRAKER: 不過這還滿好笑的 馬路就那麼寬 要開當 218.161.46.90 04/16 10:29
→ MOONRAKER: 然是自己注意車道線在哪裡 好像還沒聽 218.161.46.90 04/16 10:30
→ MOONRAKER: 過有人抱怨開出車道的時候馬路不會把他 218.161.46.90 04/16 10:31
→ MOONRAKER: 彈回去的 噗 218.161.46.90 04/16 10:31
推 CoNsTaR: clang + scan-build ? 114.32.240.238 04/16 11:59
推 chchwy: 這東西不會警告的 只會無預期當掉給你看141.168.134.224 04/16 16:11