我需要释放一些在程序中分配的内存。我需要时可以用东西清理内存吗?
#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;
}
答案 0 :(得分:5)
第1点
您无法释放某些内存。你必须释放所有。详细说明,通过单个调用malloc()
或家庭分配的内存,将一次free
- d。你不能释放已分配内存的一半(左右)。
第2点
malloc()
C
和sizeof(*ptr)
家人的回复价值do not cast。 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;
}