作者DRLai (蘇打)
看板Linux
標題[問題] 好怪的記憶體錯誤..
時間Mon Aug 10 14:33:13 2009
我寫了一個程式,有使用到其他人寫得程式(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
→ tan2:無須重新編譯程式 只需要執行 valgrind your_program 08/14 14:07