2010-03-26 60 views
0

嘿,夥計們,我剛剛開始圍繞客觀的C圍繞我的頭,並且正在Iphone上做一個小項目。我剛遇到一個奇怪的問題。我不得不在我的程序中處理圖像,所以我有很多局部變量聲明爲temp [width] [height]。如果我不使用NSThread來執行圖像處理,它會很好地工作。但是,如果我使用NSThread,每當我嘗試訪問聲明爲temp [widht] [height]的2-D數組時,它都會繼續給我EXC_BAD_ACCESS。所以我必須從堆中分配內存纔能有一個2-D數組。這將解決問題,但我仍然不明白。我的第一個想法是堆棧溢出,但它在一個線程中運行良好。我只是不明白。目標C中的線程和二維數組?

+0

我想我們需要看一個具體的例子。 – AnthonyLambert 2010-03-26 14:18:57

+2

請發佈代碼。 – 2010-03-26 14:21:06

回答

0

在線程完成數組之前,數組本身的方法可能會終止,因此您的數組超出了作用域,並且內存被佔用而被用於其他事情。但是你的線程不知道這一點,並且無論如何都訪問內存。

+0

有沒有辦法處理那種問題?我在多線程技術上是noob ... – user302581 2010-03-26 15:03:11

+1

多線程是非常複雜的,並且還有很多問題需要處理(比賽條件,死鎖等) - 您可能需要閱讀這些內容。對於這個特定的問題,您應該在堆上分配共享資源,或者最好使用NSArray(無論如何都分配在堆上)的Objective-c對象。 – shosti 2010-03-26 15:34:17

+0

謝謝你們!我發現了這個問題。它是堆疊式的。我創建了一維數組並嘗試訪問,但仍然不是。然後我把它做得更小,並且工作。我認爲通過在添加線程之前調用方法來設置堆棧大小,或者從堆中分配內存將使其工作。默認情況下,不確定爲線程分配了多少堆棧內存。 – user302581 2010-03-26 18:30:25