发布日期:2015-12-30 17:06 来源: 标签: 编程语言 C教程 C语言calloc和free C语言malloc和realloc
本章我们主要学习C语言动态内存分配calloc 、free、malloc 和realloc,下面我们就做一下具体讲解,希望大家多多支持中国站长网络学院。
calloc 
原型:extern void *calloc(int num_elems, int elem_size);
用法:#include <alloc.h>
功能:为具有num_elems个长度为elem_size元素的数组分配内存
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
举例:
      // calloc.c
      #include <syslib.h>
      #include <alloc.h>
      main()
      {
        char *p;
        clrscr();        // clear screen
        p=(char *)calloc(100,sizeof(char));
        if(p)
          printf("Memory Allocated at: %x",p);
        else
          printf("Not Enough Memory!\n");
        free(p);
        getchar();
        return 0;
      }
free
原型:extern void free(void *p);
用法:#include <alloc.h>
功能:释放指针p所指向的的内存空间。
说明:p所指向的内存空间必须是用calloc,malloc,realloc所分配的内存。如果p为NULL或指向不存在的内存块则不做任何操作。
举例:
      // free.c
      #include <syslib.h>
      #include <alloc.h>
      main()
      {
        char *p;
        clrscr();        // clear screen
        textmode(0x00);
        p=(char *)malloc(100);
        if(p)
          printf("Memory Allocated at: %x",p);
        else
          printf("Not Enough Memory!\n");
        getchar();
        free(p);         // release memory to reuse it
        p=(char *)calloc(100,1);
        if(p)
          printf("Memory Reallocated at: %x",p);
        else
          printf("Not Enough Memory!\n");
        free(p);         // release memory at program end
        getchar();
        return 0;
      }
malloc 
原型:extern void *malloc(unsigned int num_bytes);
用法:#include <alloc.h>
功能:分配长度为num_bytes字节的内存块
说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
举例:
      // malloc.c
      #include <syslib.h>
      #include <alloc.h>
      main()
      {
        char *p;
        clrscr();        // clear screen
        p=(char *)malloc(100);
        if(p)
          printf("Memory Allocated at: %x",p);
        else
          printf("Not Enough Memory!\n");
        free(p);
        getchar();
        return 0;
      }
realloc 
原型:extern void *realloc(void *mem_address, unsigned int newsize);
用法:#include <alloc.h>
功能:改变mem_address所指内存区域的大小为newsize长度。
说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。
举例:
      // realloc.c      
      #include <syslib.h>
      #include <alloc.h>
      main()
      {
        char *p;
        clrscr();        // clear screen
        p=(char *)malloc(100);
        if(p)
          printf("Memory Allocated at: %x",p);
        else
          printf("Not Enough Memory!\n");
        getchar();
        p=(char *)realloc(p,256);
        if(p)
          printf("Memory Reallocated at: %x",p);
        else
          printf("Not Enough Memory!\n");
        free(p);
        getchar();
        return 0;
      }

相关评论

专题信息
    C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。 C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。