你将如何释放分配的内存?

时间:2015-05-19 06:02:55

标签: c malloc

我需要释放一些在程序中分配的内存。我需要时可以用东西清理内存吗?

#include<stdio.h>
#include<stdlib.h>
#define MAXROW 3
#define MAXCOL 4

int main()
{
    int **p, i, j;
    p = (int **) malloc(MAXROW * sizeof(int*));
    return 0;
}

2 个答案:

答案 0 :(得分:5)

第1点

您无法释放某些内存。你必须释放所有。详细说明,通过单个调用malloc()或家庭分配的内存,将一次free - d。你不能释放已分配内存的一半(左右)。

第2点

  • malloc() Csizeof(*ptr)家人的回复价值do not cast
  • 您应该always write sizeof(type*)而不是#include<stdio.h> #include<stdlib.h> #define MAXROW 3 #define MAXCOL 4 int main(void) //notice the signature of main { int **p = NULL; //always initialize local variables int i = 0, j = 0; p = malloc(MAXROW * sizeof(*p)); // do not cast and use sizeof(*p) if (p) //continue only if malloc is a success { //do something //do something more free(p); //-----------> freeing the memory here. } return 0; }

第3点

您可以使用free()释放分配的内存。

例如,请参阅以下代码,请注意内联评论

export PATH=/Users/UserAccountName/npm/bin:$PATH

答案 1 :(得分:0)

很简单。 您可以使用此代码清理您唯一使用的变量。

#include<stdio.h>
#include<stdlib.h>
#define MAXROW 3
#define MAXCOL 4

int main()
{
     int **p, i, j;
     p = (int **) malloc(MAXROW * sizeof(int*)); 
     free(p);
     return 0;
}