我如何用C释放内存? [英] How do I free memory in C?
问题描述
我在写code里面有很多的1安培; 2维数组。我得到错误:无法分配区,我认为它是因为太多的内存分配。我用的malloc和自由的功能,但我不知道我使用他们correclyt。也许你知道我在哪里可以看到C对内存管理的好例子?
I'm writing code which has a lot of 1 & 2 dimensional arrays. I got "error: can't allocate region" and I think its because too much memory is allocated. I use "malloc" and "free" functions, but I'm not sure I'm using them correclyt. Maybe you know where I could see good examples on memory management in C?
所以..我只是试图让一种算法工作,现在这个code只是发挥功能后..
so.. I just trying to get one algorithm work and for now this code is just function after function..
//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);
...............
我应该如何使用免费
功能?
推荐答案
您必须免费()
于它是如何使用分配完全相反的顺序分配的内存的malloc()
。
You have to free()
the allocated memory in exact reverse order of how it was allocated using malloc()
.
请注意,您应该释放你与你的分配指针的使用情况做了之后的内存。
Note that You should free the memory only after you are done with your usage of the allocated pointers.
为一维数组的内存分配:
buffer = malloc(num_items*sizeof(double));
内存释放的一维数组:
free(buffer);
为二维数组的内存分配:
double **cross_norm=(double**)malloc(150 * sizeof(double *));
for(i=0; i<150;i++)
{
cross_norm[i]=(double*)malloc(num_items*sizeof(double));
}
内存释放了二维数组:
for(i=0; i<150;i++)
{
free(cross_norm[i]);
}
free(cross_norm);
这篇关于我如何用C释放内存?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!