[問題] Obj-C 記憶體汙染問題
開發平台(Platform): MAC OS X 10.11.6 Xcode
額外使用到的函數庫(Library Used): LibUSB (很舊的版本)
問題(Question):
有兩隻.m程式,這邊用A檔與B檔代稱.
A檔使用一個global structure陣列
--而且不指定大小(結構還有結構&union)--
B檔使用一個global structure指標
--當作USB device handler(結構裡面還有結構&指標)--
這兩隻檔案做的事情完全沒關係,
但是A檔處理某些特定複雜的物件後(比較簡單的不會),
會把B檔Handler裡面的結構或是指標記憶體蓋掉或者釋放?
導致之後存取Handler發生crash.
只要是會發生的物件,每次必定在固定位置發生crash.
(e.g. A檔需要一個迴圈執行100次,才能完成處理物件.
處理相同物件,必在第n次發生)
問題1: 直接在m檔 @implementation和 @interface
外面宣告這種結構,算是純c的寫法嗎?
問題2: 應該如何解釋這種記憶體被汙染現象?
目前我有發現三種暫時解決的方式
a) 把handler改成static or
b) 把handler放到class裡面 or
c) 把A檔陣列指定固定大小(因為需要的大小是已知的)
補個問題3: 有沒有推薦的正確解法?
因為我是Obj-C新手,有任何錯誤提問或觀念請見諒
另外,前任開發者已經不可考,所以也無從得知為何要這樣寫.
歡迎任何大大給予指教
感激不盡!!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.184.42.52
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1475391677.A.AD4.html
※ 編輯: hsm926 (111.184.42.52), 10/02/2016 15:45:40
※ 編輯: hsm926 (111.184.42.52), 10/02/2016 15:46:56
→
10/02 16:28, , 1F
10/02 16:28, 1F
推
10/02 16:32, , 2F
10/02 16:32, 2F
→
10/02 18:45, , 3F
10/02 18:45, 3F
→
10/02 18:46, , 4F
10/02 18:46, 4F
→
10/02 20:23, , 5F
10/02 20:23, 5F
→
10/02 20:27, , 6F
10/02 20:27, 6F
推
10/02 21:26, , 7F
10/02 21:26, 7F
推
10/02 21:51, , 8F
10/02 21:51, 8F
→
10/02 22:07, , 9F
10/02 22:07, 9F
→
10/02 22:07, , 10F
10/02 22:07, 10F
→
10/02 22:09, , 11F
10/02 22:09, 11F
→
10/02 22:24, , 12F
10/02 22:24, 12F
→
10/02 22:25, , 13F
10/02 22:25, 13F
→
10/02 22:31, , 14F
10/02 22:31, 14F
→
10/02 22:32, , 15F
10/02 22:32, 15F
→
10/02 22:34, , 16F
10/02 22:34, 16F
→
10/02 23:19, , 17F
10/02 23:19, 17F
推
10/03 23:34, , 18F
10/03 23:34, 18F
→
10/04 00:35, , 19F
10/04 00:35, 19F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
問題
4
19