酱坛子

专注C++技术 在这里写下自己的学习心得 感悟 和大家讨论 共同进步(欢迎批评!!!)

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  66 Posts :: 16 Stories :: 236 Comments :: 0 Trackbacks

公告

王一伟 湖南商学院毕业 电子信息工程专业

常用链接

留言簿(19)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 382346
  • 排名 - 63

最新随笔

最新评论

阅读排行榜

评论排行榜


   出现了就是程序有问题,这个东西在程序里是不能做任何判定的
   所以只能避免

  通常避免野指针的办法是正确的使用指针   
  1.声明一个pointer的时候注意初始化为null  
  int*   pInt   =   NULL;   

  2.分配完内存以后注意ASSERT  
  pInt   =   new   int[num];  
  ASSERT(pInt   !=   NULL);   

  3.删除时候注意用对操作符  
  对于new   int类型的,用delete  
  对于new   int[]类型的,用delete   []   

  4.删除完毕以后记得给他null地址  
  delete   []   pInt;  
  pInt   =   NULL;   

  5.记住,谁分配的谁回收,不要再一个函数里面分配local   pointer,送到另外一个函数去delete   

  6.返回local   address是非常危险的,如必须这样做,请写注释到程序里面,免得忘记  
posted on 2006-12-13 18:16 @王一伟 阅读(2244) 评论(3)  编辑 收藏 引用

Feedback

# re: 关于野指针 2006-12-13 22:26 大名
你学地是c吧。  回复  更多评论
  

# re: 关于野指针 2006-12-14 10:57 王一伟
我上面说的东西 C和C++没区别吧 :)  回复  更多评论
  

# re: 关于野指针 2006-12-24 00:55 过客
第二条用 ASSERT 是不够的,虽然现在内存分配一般不会失败,但也不是没有失败的可能。内存分配失败是一种异常,不是一种错误,因此应该直接用 if 判断分配结果并进行合适的处理。而且 ASSERT 在 Release 版本中没有任何作用。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理