当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
答案 0 :(得分:0)
数组的名称是指向其数据存储区的指针。因此,代码中的每个memset
都应该是memset(array, 0, size)
而不是 memset(&array, 0, size)