【发布时间】:2015-07-30 19:44:13
【问题描述】:
我需要释放一些分配给我的程序的内存。我可以在需要的时候使用一些东西来清理内存吗?
#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;
}
【问题讨论】:
-
不清楚你在问什么。要释放内存,只需调用
free(p)。但如果你问的是 C 是否有原生垃圾回收,那么答案是否定的。 -
对于一个新问题来说是一个明确的问题。不要害怕他@AlanAu 先生
-
使用正确的类型,不要强制转换 malloc 的结果:
int* (*p)[MAXROW] = malloc (MAXROW * sizeof(int*));. -
@Lundin 以及在
malloc(等)you should always write it 中以ptr = malloc(sizeof(*ptr) * ...);而非ptr = malloc(sizeof(ptrtype*) * ...);调用sizeof时。 -
@Eregrith 只有将指针声明为数组指针时才会起作用。但是,您的建议是编码风格的主观问题,使用任何一种形式都没有明显的好处。这两种风格的争论我已经听过无数次了,无需重复。这两种风格都有合理的理由。只需记录您在编码风格指南中选择的那个。