现在的位置: 首页 > 综合 > 正文

【原创】内存泄漏和溢出

2013年03月08日 ⁄ 综合 ⁄ 共 742字 ⁄ 字号 评论关闭
内存泄漏是指在堆上分配的内存没有被释放,从而失去对其控制。这样会造成程序能使用的内存越来越少,导致系统运行速度减慢,严重情况会使程序当掉。  
内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。  
  *p   =   (char   *)malloc(num);//在堆上分配内存。   
  {   
      
char   *str   =   NULL;   
      GetMemory(
&str,   100);   
      strcpy(str,   
"hello");   
      printf(str);       
  }   

 

  函数退出后,str的内存被释放,程序失去了对在堆分配的管理手段,从而造成内存泄漏。   
  改为:   
  {   
      
char   *str   =   NULL;   
      GetMemory(
&str,   100);   
      strcpy(str,   
"hello");   
      printf(str);   
      free(str);       
  }    

 

内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。
  char   szTemp[1];   
  memcpy(   szTemp,   
0x00,   sizeof(char)*99999999999999999999999999   );   

 

抱歉!评论已关闭.