作业场所的缺陷不包括[3篇].docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作业场所的缺陷不包括[3篇]

作业场所的缺陷不包括[3篇] 以下是网友分享的关于作业场所的缺陷不包括的资料3篇,希望对您有所帮助,就爱阅读感谢您的支持。 作业场所的缺陷不包括(一) 第16卷 第4期 2005年12月          广西工学院学报           Vol116 No14  JOURNALOFGUANGXIUNIVERSITYOFTECHNOLOGY   Dec12005 文章编号 100426410(2005)0420031205 C++的缺陷与不足 唐培和,杨新伦,刘 浩 (广西工学院计算机工程系,广西柳州 545006) 摘 要:为全面、深入地研究C++,依据现代软件工程的指导思想,详细分析其在内存管理、面向对象、安全性、可移植性、可读性等方面存在的问题和不足,洞悉语言的缺陷,有利于开发高质量程序,对学习和掌握该语言具有较重要的参考价值。 关 键 词:C++;缺陷;内存管理;安全性;可移植性;可读性 中图分类号:T   文献标识码:A   C++无疑是一门优秀的程序设计语言,很多文献都有介绍[1~4]。任何一门程序设计语言的诞生,都有其强烈的时代背景,C++也不例外。没有必要评价语言设计者做出的各项设计决策,但应该依据现代软件工程的指导思想去理解和把握语言的本质与核心。   要想彻底地掌握一种语言,,。软件开发尤其是,,能1在C语言中,虽然可通过库函数malloc()和free()来分配和释放内存,但却是非常危险的内存管理方法[5]。我们知道,malloc函数可分配指定大小的内存空间,并返回该内存块的首地址。free函数则根据指定的地址释放内存块。这一切看似很正常,但却隐藏着“杀机”: 内存分配未成功(失败),却使用了它。初学者经常犯这样的错误。 内存分配成功,但尚未初始化就引用它,误以为内存的缺省初值全为零。 内存分配成功并且已经初始化,但操作越过了内存块的边界。这是非常危险的行为! 忘记了释放不再使用的内存,造成内存损耗,降低整个系统的运行速度,并且这些没用的内存垃圾还要被虚拟存储系统对换到外存上。严重时,可用的内存资源被耗尽,导致程序崩溃。 释放了内存块后,没有将指针设置为NULL,导致产生“野指针”。“野指针”的存在将带来非常大的安全隐患(有可能使用已释放的内存块)。 释放一块未被分配的内存空间,系统自然也会出问题。 再次释放已释放的内存块,会造成系统的崩溃。 C++为了与C完全兼容,允许使用库函数malloc()和free(),这就给高质量的程序设计带来了很大的安全隐患。虽然C++增加了两个运算符new和delete,但其用法与malloc和free相同,它们返回的仍然是对象的地址,而不是对象的“句柄”。当分配的对象在程序运行过程需要在内存中移动时,其地址就会发生变化。如果使用句柄就不用考虑这个问题,也便于”自动垃圾回收”。 发生内存错误非常麻烦,编译时不能发现这些错误,程序运行时才出现问题。并且大都没有确定的故障收稿日期:2005209201 基金项目:广西自然科学基金(桂科自0066006)1 作者简介:唐培和(19642),男,广西全州人,广西工学院计算机工程系副教授。 32广西工学院学报                    第16卷 现象,甚至时隐时现,严重时可导致系统崩溃,轻微时又没有任何反应,给程序维护增加了非常大的难度。2 面向对象方面的问题 211 向下兼容 面向对象技术是软件界非常有意义的一项技术,许多C++文献都认为C++很好地顺应了这种潮流。但遗憾的是C++并不能真正满足面向对象编程,原因是向下兼容。向下兼容通常被当作一个优秀的特性,因为它能减轻程序员学习新语言的难度,并且将许多经过测试的代码与已有的市场份额相结合会确保成功。但对C++而言,与C向下兼容是它最讨人喜欢的特性又是它最脆弱的一环。为了与C兼容,C++被迫作出了很多重大的设计妥协,导致语言过分华丽,过分复杂。C++作者BjarneStroustrup也意识到了这一点:“无论是从语法还是语义角度,与C兼容的子集(尤其是类型转换的部分)都是C++中最欠合理优雅的部 [6]分”。总之,C++过于依赖C,它是面向对象与传统的面向过程相结合的产物。 212 数据类型 与C一样,C++中包含了int,float,double,char等简单的数据类型。一种严格的面向对象语言,它的所有成分都应该和类或者对象有关的,也就是说,严格的面向对象语言中不应该有基本数据类型的存在。但事实上,这些简单的数据类型应用得太广、太多了,为了简化编程,C++中保留了与面向过程语言一致的、与类无关的基本数据类型。从这个意义上来说,C++继承了面向过程的一些语言机制,并不是严格意义上的、完全面向对象的语言。 213 程序结构 在纯面向对象的

文档评论(0)

18273502 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档