好怪的記憶體錯誤.. - Linux

By Edith
at 2009-08-10T14:33
at 2009-08-10T14:33
Table of Contents
我寫了一個程式,有使用到其他人寫得程式(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
--
不知道為甚麼,使用他跑一些資料比較小的東西還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
--
Tags:
Linux
All Comments

By Candice
at 2009-08-12T14:10
at 2009-08-12T14:10

By Ivy
at 2009-08-14T09:57
at 2009-08-14T09:57

By Isla
at 2009-08-15T02:11
at 2009-08-15T02:11

By Sandy
at 2009-08-17T23:05
at 2009-08-17T23:05
Related Posts
centOS底下無法開啟firefox

By Poppy
at 2009-08-10T11:17
at 2009-08-10T11:17
突然讀不到硬碟

By Ivy
at 2009-08-10T06:56
at 2009-08-10T06:56
論壇

By Poppy
at 2009-08-10T05:22
at 2009-08-10T05:22
問sed的問題

By Heather
at 2009-08-10T03:25
at 2009-08-10T03:25
誰能教我怎麼判斷主機板有沒有支援隨身 …

By Mason
at 2009-08-10T01:18
at 2009-08-10T01:18