malloc函数的工作机制与使用方法

malloc函数的工作机制  

malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。调用free函数时,它将用户释放的内存块连接到空闲链上。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有可以满足用户要求的片段了。于是,malloc函数请求延时,并开始在空闲链上翻箱倒柜地检查各内存片段,对它们进行整理,将相邻的小空闲块合并成较大的内存块。

malloc函数的使用方法

函数声明   void *malloc(int size);

说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。
返回值:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。

例如:如果想申请100个整型的内存空间,即 array=(int *)malloc(100*sizeof(int))

如果想申请100个字符型的内存空间,即array=(char*)malloc(100*sizeof(char)),以此类推。

下面是一个应用例子:

  
  
  
  
  1.     #include<stdio.h>  
  2.  
  3.    
  4.   #include<stdlib.h>  
  5.  
  6.    
  7.   int main()  
  8.  
  9.         {  
  10.  
  11.    
  12.   int i,j;  
  13.  
  14.    
  15.   int *array=NULL;  
  16.  
  17.    
  18.   scanf("%d",&i);  
  19.  
  20.    
  21.   array=(int*)malloc(i*sizeof(int)); //申请i个整型内存空间  
  22.  
  23.    
  24.   for(j=0;j<i;j++)  
  25.  
  26.    
  27.   scanf("%d",&array[j]); //输入i个整型变量  
  28.  
  29.    
  30.   for(j=0;j<i;j++)  
  31.  
  32.    
  33.   printf("%d\n",array[j]); //打印这个链表中的内容  
  34.  
  35.    
  36.   free(array); //释放内存空间  
  37.  
  38.    
  39.   array=NULL;  
  40.  
  41.    
  42.   return 0;  
  43.  
  44.    
  45.   }  
  46.  
 

本文主要参阅malloc百度百科的内容,出处http://baike.baidu.com/view/736228.htm

你可能感兴趣的:(函数,职场,malloc,休闲,malloc函数)