delete的使用

来源:互联网 发布:游戏编程入门pdf第四版 编辑:程序博客网 时间:2024/04/28 23:53

 英语
  /di`li:t/
  v.tr. 
  remove or obliterate(written or printed matter),esp.by striking out
  (尤指划掉)删除,删去(手写话印刷内容)
  [Latin delēre delet-'efface']
  对于文件名shift+delete可彻底删除。按住 SHIFT 键再单击“关闭”按钮(一般适用)
  

Delete()过程


  语言:Pascal
  Procedure Delete(var S :String ; Index,Count:Integer) ; 
  说明:Delete() 删除字符串S中从第Index个字符开始的Count个字符。
  若Index超出了S的长度,则不执行删除的操作。
  若Index+Count超出了S的长度,则删除从Index到S末尾的字符。
  若Index或Count出现负数,则不执行删除的操作。
  例如:
  Var S :String ='1234567890' ;
  执行 Delete(S,1,3) 后,S=‘4567890’ ;执行 Delete(S,9,8888) 后,S='12345678'
  执行 Delete(S,99,2) 后,S=‘1234567890’ ;执行 Delete(S,-1,3) 后,S=‘1234567890’
  

new / delete 的使用(c/c++)


  
  编程的时候经常要用到堆内存的分配,通常使用的操作符是new,这个时候就必然要用到delete函数去释放申请的内存空间。
  此时至少要遵循以下原则:
  (1)new和delete是成对出现的。只出现一个是错误的或不规范的写法,即时能编译通过,也会有安全隐患;
  (2)使用的new与delete要相同。也就是说如果你在 new 表达式中使用了 [],你必须在对应的 delete 表达式中使用 []。如果你在 new 表达式中没有使用 [],你也不必在对应的 delete 表达式中不使用 []。
  例:
  
printf("-------- 使用 new / delete 情况 ---------------\n");
  string *p1=new string("123");//p1申请了一个空间
  printf("<%s>\n", p1->c_str());
  delete p1;//释放的时候释放一个就可以了
  printf("-------- 使用 new[] / delete[] 的情况 ---------------\n");
  int i;
  string* p2 = new string[5];//p2申请了一组空间
  for ( i=0; i< 5; i++ ) 
  {
  p2.assign("123");
  }
  for( i=0; i< 5; i++ )
  {
  printf("%d:%s\n", i, p2.c_str());
  }
  delete [] p2;//当然要释放一组了