看板 Linux 關於我們 聯絡資訊
我寫了一個程式,有使用到其他人寫得程式(FLUTE,網路上公開的免費程式) 不知道為甚麼,使用他跑一些資料比較小的東西還OK 如果資料大了反而會錯 然而我不覺得是他固定array大小的關係 因為資料量並沒有超過他設定的上限 我用gdb的結果 Program received signal SIGSEGV, Segmentation fault. 0x000000000043646c in flutes_MD (d=Cannot access memory at address 0x7fffea46ec38 ) at ./include/FLUTE/flute.c:809 809 Tree flutes_MD(DTYPE d, DTYPE xs[], DTYPE ys[], DTYPE s[], DTYPE acc) 上文有寫到d=Cannot access memroy at address.... 後來我使用bt,查詢他上一行的資料 顯示d=p+1(此處p=9,故傳入時d應該為10) 不過有問題的地方在於,他的程式是call by value,亦即應該不會有上述的狀況 (有其他的case一樣p=9帶入並不會有問題,故應該不是value的關係) 我個人覺得應該是系統的關係 請問有沒有辦法強制一個程式執行的記憶體範圍呢? 感謝m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.138.145.212
huggie:這種 error 不見得就是出現問題的那一行 08/11 13:56
huggie:可試試 electric fence http://perens.com/FreeSoftware/ 08/11 13:57
tan2:推薦valgrind http://www.valgrind.org 08/14 14:06
tan2:無須重新編譯程式 只需要執行 valgrind your_program 08/14 14:07