2015-08-31 4 views
-1

Иногда я получаю EXC_BAD_ACCESS (случайно), когда humSize больше 13.000. Im вычисляет некоторые значения по набору климатических данных в моем приложении, поэтому размер будет часто больше 13.000. Я честно не знаю, почему первые несколько строк работают безупречно, а последние строки разбивают приложение. Я пробовал искать зомби с инструментами Xcode, но поскольку объем данных такой большой, он просто заставляет мой MacBook замерзать. Память, используемая приложением, составляет около 250 МБ в этот момент.memset EXC_BAD_ACCESS код 2

[Редактировать]

Изменение порядка следования MemSet вызовов показывает, что это всегда происходит на 3-й или 4-й вызов MemSet .. Может быть, не хватает памяти или что-то?

int humSize = (int)[humidityArray count]; 

double matrix[humSize*4]; 
memset(&matrix, 0, humSize*4*sizeof(double)); 
double matrix_t[4*humSize]; 
memset(&matrix_t, 0, 4*humSize*sizeof(double)); 
double matrix_result[4*4] = {0}; 
double vektor[humSize]; 
memset(&vektor, 0, humSize*sizeof(double)); 
double vektor_result[4] = {0}; 

[...] //do some calculations with the variables above 

double TimeVektor[humSize]; 
memset(&TimeVektor, 0, humSize*sizeof(double)); //code crashes at this point, never at the memsets above 
double DVektor[humSize]; 
memset(&DVektor, 0, humSize*sizeof(double)); 

[...] //some more calculations with the variables above 

ответ

0

Имя массива - указатели, в их хранилище данных. Таким образом, каждый memset в коде должны быть memset(array, 0, size) и неmemset(&array, 0, size)

+0

К сожалению, это не решает проблему .. Но спасибо – daydr3amer

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