在c语言中,不必在程序的声明部分定义,也不必在函数结束之前释放它,而是可以在需要时随时释放它,在不需要时随时释放它,并在堆中存储临时数据,从而创建动态内存分配空间。 如果需要,可以申请系统上占用的区域的大小。 由于声明部分未定义为变量或数组,因此不能通过变量名或数组引用这些数据。 只能用指针参照。
对内存的动态分配通过系统提供的库函数实现,主要有malloc、calloc、free、realloc四个函数。
然后,写malloc函数如何将空间分配为一维、二维和三维数组。
一; 申请和释放一维数组:
例如,要为字符数组分配空格:
char*p=(char* ) malloc ) m*sizeof ) char );
释放空间:
free(p;
二:二维序列申请与释放:
1 :使用2级指针:
char**p=(char* ) malloc ) m*sizeof ) char* );
for(I=0; I
{
p[I]=(char* ) malloc ) n*sizeof ) char* );
() ) ) ) )。
//释放空间:
for(I-0 ); I
{
free(p[I];
() ) ) ) )。
free(p;
2:数组指针的使用方法:
char(p ) [3] ) char(* ) [3] (malloc ) sizeof ) ) char ) *m*n );
以这种方式分配的内存只能释放一次。
free(p;
三)申请和释放三维数组:
char***p=(char*** ) malloc ) m*sizeof ) char** ) )
for(I=0; I
p[I]=(char** ) malloc ) n*sizeof ) char* );
for(I=0; I
for(j=0; j
p[I][j]=(char* ) malloc (p * sizeof ) char );
//释放空间:
for(I=0; I
for(j=0; j
free(p ) I ) j );
for(I=0; I
free(p[I];
free(p;
注意:您可以看到空间分配和释放是逐步进行的,但空间释放的顺序与空间分配的顺序相反。