Я пишу код, который имеет много одномерных и двухмерных массивов. Я получил «ошибка: не могу выделить регион», и я думаю, что это потому, что выделено слишком много памяти. Я использую функции "malloc" и "free", но я не уверен, что использую их правильно. Может быть, вы знаете, где я мог видеть хорошие примеры по управлению памятью в C?
итак .. Я просто пытаюсь заставить работать один алгоритм, а пока этот код является просто функцией после функции ..
//memory allocation for 1D arrays
buffer = malloc(num_items*sizeof(double));
//memory allocation for 2D arrays
double **cross_norm=(double**)malloc(150 * sizeof(double *));
for(i=0; i<150;i++)
{
cross_norm[i]=(double*)malloc(num_items*sizeof(double));
}
//code
Window(N, window_buffer);
STFTforBMP(buffer,N,f, window_buffer);
getMagnitude(buffer,f, N, magnitude);
calculateEnergy(flux,magnitude, f);
calculateExpectedEnergy(expected_flux, candidate_beat_period, downbeat_location, f);
calculateCrossCorrelation(cross, flux, expected_values, f);
findLargestCrossCorrelation(&cross_max, cross, f);
normalizeCrossCorrelation(cross_norm, &cross_max, cross, f);
...............
Как использовать функцию free
?