星期四, 6月 05, 2008

Bus error

今天寫程式跑出了Bus error,第一次寫程式看到這個錯誤訊息,
上網去查了一下才知道
In computing, a bus error is generally an attempt to access memory that the CPU cannot physically address. 
也就是說我的指標 跑到了不該跑去的地方。可是程式看起來很正常。

後來發現我沒注意到一個重點。
也就是 char *str 與 char str[] 的不同之處。
在compiler會將其中的字串存到constant pool,而這個constant pool是唯讀的
str[]會將在pool裡的字元一個一個複製出來,
而*str會將指標指在第一個字元上面。
就這樣的現象來看也就是說,*str是唯讀的狀態。
所以使用 *str的地方錯誤的話,就有可能會產生bus error