memset EXC_BAD_ACCESS代码2

时间:2015-08-31 11:45:27

标签: objective-c xcode exc-bad-access memset

当humSize大于13.000时,我有时(随机)得到一个EXC_BAD_ACCESS。 我在我的应用程序中计算一组气候数据的某些值,因此大小通常会大于13.000。 老实说,我不知道为什么前几行完美运行,最后一行崩溃应用程序。 我尝试使用Xcode工具寻找僵尸,但由于数据量很大,它只会导致我的MacBook冻结。 此时应用程序使用的内存大约为250mb。

[编辑]

更改memset调用的顺序表明它总是在memset的第3或第4次调用时发生..也许没有足够的内存或什么?

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

1 个答案:

答案 0 :(得分:0)

数组的名称是指向其数据存储区的指针。因此,代码中的每个memset都应该是memset(array, 0, size)不是 memset(&array, 0, size)