一个编程中的低级错误 [原]

原创 2007年10月09日 10:23:00
 最近翻出林锐的《高质量c++编程》一文,例行的复习总结罢了。果然是“读书百遍,其意自现”,结合自己以往编程的经验了解到了以前不曾认识深刻的部分。细说如下:
 编程的故事,有这样的需求,一个函数中有很负责的实现,我当然不希望多次调用以返回一个简单的过程,我期望能够在返回一些主结果中,获得一些副产品,很自然的想到了用传递参数的方法来得到过程值的方法。因为用的java,java传递应用于是很自然的传递了一个Integer的对象做参数,注意,我没有初始化这个参数,呵呵,我想再得到这个参数后判断是否为null,来确定是不是处理了数据(太贪心了)。但是调试的结果让我很郁闷,在Integer传入之前我设置为null,在方法调用的过程中跟踪发现它一度不为null,但是传出后仍然为null,我靠一个字。
当时咨询了相关更专业的认识,给出了一个解决方案是,创建Integer对象,然后传入,后根据Integer对象的值内容来判断是否进行了处理。另外我的选择方案是传递一个容器(已经创建了的),接受方法内的结果。当然也有更好的方法是用return来返回,但是由于是副产品,无视。
 补充说明,很显然从软件工程角度来看,我的编码风格很不好,一个方法中集合了很多的结果,应该按照功能拆分。这个是后话不说。
 今天看到林博士的一章,了解到,如果传入参数,编译器会创建一个副本来指向传入参数,如果传入参数是地址,副本的操作有针对地址,结果就会反馈到传入参数中,但是如果副本在函数中另建了一个内存区域,这个结果就不会反馈到传入参数中,导致虽然是传入地址,但是结果却没有变化。
  另外,java虽然有vm来处理内存的回收,但是如果没有对一个对象及时的赋值为null,通知其已经被废弃,而这个对象很不幸的是生命周期很长,那么vm也没有办法去回收这个对象的内存,导致内存不够。另外,在代码中我们很少假定内存不够用的情况,在c++中就必须来判断,但是在java中,会以一个runtime的异常来上报给vm,从而终止程序,不会对操作系统造成很到影响,这也就是java做的改进之一。

【C++】低版本VS程序使用高版本打开的问题

按理来说,低版本VS写作的程序,直接打开解决方案下的Debug文件夹,就能够直接运行,但是一些低版本VS程序,由于VC++的运行库不同,在打开的时候会出现:“应用程序无法启动,因为应用程序并行配置不正...
  • yongh701
  • yongh701
  • 2016年02月24日 15:18
  • 1818

Unix网络编程(卷一)-第一个简单的时间获取程序

1 前言 自己一直想闹明白Unix网络编程到底是怎么一回事,所以开启这个系列文章。这个文章系列将会持续下去,直到不再Coding为止。 2 运行第一个实例 这篇博客是《Unix 网络编程卷一:套接字联...
  • shenwanjiang111
  • shenwanjiang111
  • 2016年09月06日 18:37
  • 1240

二维码简介和容错率的问题

转:http://www.cnblogs.com/archoncap/p/5302012.html 二维码容错等级 2013-01-31 浏览次数:1,316 次 错误校正...
  • hwhua1986
  • hwhua1986
  • 2016年12月26日 20:35
  • 1476

OpenGL编程低级错误范例手册

看到一篇OpenGL编程的错误总结,对我初学来说应该比较有用,先保留,嘿嘿... 谢谢原文作者的贡献:http://www.cnitblog.com/linghuye/archive/2005/...
  • ruihaha
  • ruihaha
  • 2014年07月17日 08:52
  • 433

Java编程10大低级错误

今天面试时HR问我一个关于数据库性能调优的问题,对于我的回答引发了她的另一个问题:Java 10大低级错误 知不知道?这个在以前公司的时候还真的提过这个问题,但是我实在是、、、在网上搜了一下,拿来分享...
  • pcxbest
  • pcxbest
  • 2012年07月26日 18:55
  • 3060

关于COM接口使用时候的一个低级错误

在使用dll的一个COM接口时候,由于有一些结构体或枚举值没有定义,且在app中不调用这个接口,就直接给注释掉了。导致api寻址错误,直接调用dll中错误的api地址。奇怪的现象导致。   ...
  • xuxinhua
  • xuxinhua
  • 2012年07月09日 14:44
  • 448

java编程规范 + 十大低级错误

Java语言编程规范   1            范围 本规范规定了使用Java语言编程时排版、注释、命名、编码和JTEST的规则和建议。 本规范适用于使用Java语言编程的部门和产品。 ...
  • mike_caoyong
  • mike_caoyong
  • 2012年09月26日 21:50
  • 2204

Opengl编程低级错误范例手册

1.没有glDisable(GL_TEXTURE_2D),导致基本几何作图全部失败。 2.镜头位置没调好,导致所有物体不可见. 3.物体位置数据错误,导致物体大大超出镜头显示范围. ...
  • blueln
  • blueln
  • 2012年09月12日 19:39
  • 808

C++十大低级错误和C++编程规范

  • 2011年08月12日 15:06
  • 125KB
  • 下载

单机运行Spark Shell遇到的一个低级错误

bin/spark-shell下载spark-2.1.0-bin-hadoop2.7.tgz,解压缩直接进入spark根目录,然后运行bin/spark-shell即可进入。 但是今天遇到了一个低级...
  • chengyuqiang
  • chengyuqiang
  • 2017年04月08日 10:57
  • 7408
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一个编程中的低级错误 [原]
举报原因:
原因补充:

(最多只允许输入30个字)