我如何用C释放内存? [英] How do I free memory in C?

查看:125
本文介绍了我如何用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆