武汉理工大学计算机学院信也技术员000000000000009000000计算机程序设计基础C语言900主讲教师:吕曦武汉理工大学Wuhan Universityof Technology
主讲教师:吕 曦
计算机程序设计基础语言0动态内存分配电电电中武汉理工大学Wuhan Universityof Technology
计算机程序设计基础C语言 ⚫ 动态内存分配
动态内存分配1.堆(heap)是指未使用的内存空间。2.内存分配函数mal1oc()和ca1loc()用于建立受保护的堆内存区域。例如对于整型指针 int *t;t=(int*)malloc(lo*sizeof(int));或 t=(int *)calloc(lo,sizeof(int));在堆上分配了10个整数。3.函数free()释放指定的堆空间。4.malloc()的返回值的是一个通用类型指针。可以用(int*)转成整形指针,也可转化为其他类型指针。5.用mal1loc()的好处是可以在程序中随时开辟指定大小的堆空间,并当做数组使用。6.若内存分配失败,malloc()返回null值。因此,通常用if(!t)exit(1);来建立错误陷阱
1.堆(heap)是指未使用的内存空间。 2.内存分配函数malloc()和calloc()用于建立受保护的堆内存区域。例如 对于整型指针 int *t; t=(int *)malloc(10*sizeof(int)); 或 t=(int *)calloc(10,sizeof(int)); 在堆上分配了10个整数。 3.函数free()释放指定的堆空间。 4.malloc()的返回值的是一个通用类型指针。 可以用(int *)转成整形指针,也可转化为其他类型指针。 5.用malloc()的好处是可以在程序中随时开辟指定大小的堆空间,并当做数 组使用。 6.若内存分配失败,malloc()返回null值。 因此,通常用if(!t)exit(1);来建立错误陷阱
例:使用堆内存实现动态数组main()(int *t,i,n=10;t=(int*)malloc(n*sizeof(int))if(!t)printf("无足够内存"),exit(1);for(i=o;i<n;i++)t[i]=rand()%1o1printf("%4d",t[i]);free(t);getch() ;1
main(){ int *t,i,n=10; t=(int *)malloc(n*sizeof(int)); if(!t) printf("无足够内存"),exit(1); for(i=0;i<n;i++) t[i]=rand()%101, printf("%4d",t[i]); free(t); getch(); }
下图说明了上例中malloc函数调用的结果:堆中现在建立了一块由n个整数组成的受保护区域而且名为t的整型指针变量指向第1个整数。堆
●t 堆