2010-03-26 3 views
0

Эй, ребята, я только начинаю крутить голову вокруг цели C, и я делаю небольшой проект на Iphone. И я просто столкнулся с какой-то странной проблемой. Мне пришлось иметь дело с изображениями в моей программе, поэтому у меня есть много локальных переменных, объявленных как temp [width] [height]. Если я не использую NSThread для обработки изображений, все работает отлично. Однако, если я использую NSThread, он будет давать мне EXC_BAD_ACCESS, когда я пытаюсь получить доступ к 2-мерному массиву, объявленному как temp [widht] [height]. Поэтому я должен выделить память из кучи, чтобы иметь 2-мерный массив. Это решит проблему, но я до сих пор ее не понимаю. Моя первая мысль была бы сложена над потоком, но она работала отлично с одним потоком. Я просто не понимаю.Резьба и двумерный массив в объективе C?

+0

Я думаю, нам нужно увидеть конкретный пример. – AnthonyLambert

+2

Пожалуйста, отправьте код. –

ответ

0

Возможно, метод, к которому привязан массив, заканчивается до того, как поток завершит работу с массивом, поэтому ваш массив выходит из сферы действия и занятая память используется для чего-то другого. Но ваш поток не знает этого и независимо от него обращается к памяти.

+0

Есть ли все-таки дело с этой проблемой? Я ноб на многопоточном ... – user302581

+1

многопоточность очень сложна, и есть много проблем, связанных с (условия гонки, тупик и т. Д.). Возможно, вы захотите их прочитать. Для этой конкретной проблемы вы должны распределять общие ресурсы в куче или, предпочтительно, использовать объекты объектного типа, такие как NSArray (которые в любом случае распределены на куче). – shosti

+0

Спасибо, ребята! Я нашел проблему. Это был стек над потоком. Я создал массив 1-D и попытался получить доступ к нему, но все еще не был. И затем я сделал это меньше, и это сработало. Я думаю, либо установить размер стека, вызвав метод до добавления потока или выделения памяти из кучи, чтобы он работал. Не уверен, по умолчанию, сколько памяти стека было выделено для потока. – user302581

Смежные вопросы