例如︰
注意︰
例如:
例如︰串列 (List),樹 (Tree),不規則的多維陣列 (Triangular, Sparse...)...。
其生成在 malloc() 函式, 終結在 free() 函式, 可以在任何看得到此記憶體位址的函式內存取此區域記憶體的變數內容, 不像區域性變數 (local variable) 只有在開始執行一函式時才生成, 函式一完畢立刻就終結, 不能再被使用。
注意:
下面狀況會產生不正確的指標︰
另一個在前面範例裡出現的問題是: 當你配置完記憶體後你會得到一個指標, 這個指標就好像鎖匙一樣, 是你存取此段記憶體區塊內資料唯一的媒介, 如果你弄丟了的話你就沒辦法再存取這段記憶體, 也沒有辦法釋放此段記憶體,
例如:
注意:
配置了 1K bytes 的記憶體, 而用
記錄下此區段第 20 個整數變數的位址的話, 這也算是複製指標, 雖然不能夠藉由 free(iPtr1) 直接釋放該段記憶體 free (iPtr-20) 還是可以成功的, iPtr1 也可以存取記憶體區塊內任意的元素, 也就是該段記憶體區塊上有多個指標指於其上, 必須非常小心地處理, 否則很容易有 dangling reference (illegal access) 的錯誤。
回
程式設計課程
首頁
製作日期: 98/11/30
by 丁培毅 (Pei-yih Ting)
E-mail: pyting@mail.ntou.edu.tw