Как освободить память в C?

Я пишу код, который имеет много 1- и 2-мерных массивов. Я получил «ошибка: не могу выделить регион», и я думаю, это потому, что выделено слишком много памяти. Я использую функции 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 function?

32
задан Gilles 'SO- stop being evil' 1 February 2012 в 16:47
поделиться