再见西城 发表于 2015-1-16 11:05:02

来讲讲:用C言语写的程序不平安

经常看到有人问用什么版本的linux好,其实只要你认真学习无论什么版本都挺好的。
  关于C言语内存办理亏弱的成绩几年前我们就会商过。有人试图辩驳,说古代各类操纵体系或runtime平台的前进,对内存办理的风险供应了各类回护,好比地点空间随机化,另有各类诸如Valgrind如许的工具能够发明内存会见bug,年夜年夜减弱伤害水平。我非常保举人人从头浏览一下那次会商。



  我的概念——事先和如今——都是C言语不合适用来写平安性请求高的程序,任何缺少内存反省机制的编程言语都不合适。很复杂,就是不合适。它们应当仅限于用来写一些小的中心体系,最好是小到能够用一些惯例的办法(被证实的办法)举行反省,一切别的的,包含全体使用逻辑,都应当用受控代码完成(比方C#,Java或别的的,我没有倾向)。
  心脏出血就是这类缺少界限反省酿成的了局的另外一个例子。它没法被Valgrind如许的工具反省出,由于它不是一般的被触发的举措——它必要是一种歹意的举动或是一种充足智能的测试协定才干发明(很难很难)。
  现实上,没有哪一个程序员可以伶俐到能够写出完整制止心脏出血如许的bug的程序。究竟,程序员的进修和编码存眷的是他们的程序的逻辑。在没有界限反省机制的编程言语里,逻辑大概会走错路,由于盘算机能够会见和实行恣意内存内容,这些内容是和你的程序里的代码和变量是不妨的。一切没有界限反省的编程言语将盘算机的多个维度表露给程序,假如你以为本人比OpenSSL开辟团队强、能很好的处置这类情形,那是掩耳盗铃。
  我们没法在软件中制止bug的存在,但我们能够堵住这些看起来无量无尽的bug的泉源。由于它,很早之前我们的互联网就蒙受了Morris蠕虫病毒的伤害。如今,2年的工夫里,天下70%的互联网流量都表露无疑,价值惨痛。假如不堵住这泉源,今后会让我们丧失更多。
  英文原文:TheHeartbleedBug
在linux中学习命令的最好办法是学习Shell脚本编程,Shell脚本比起其他语言来学习简单,但是功能却十分强大.通过学习Shell编程,能让你掌握大量的linux命令。

金色的骷髅 发表于 2015-1-18 07:47:30

只有全面撑握了这些工具.然后你学了语法..就要经常锻炼.写不好没关系.哪怕再小的程序..你写写改改

分手快乐 发表于 2015-1-25 16:29:37

简单的双重for循环就搞定的都要想半天那样,现在上研了,迫于实验室项目的需要,又重新拿起C++课本开始看。

仓酷云 发表于 2015-2-3 11:42:20

这里面不涉及任何程序细节..只是详细地分析.这个软件出来是什么效果.怎么用,这就是需求..

再现理想 发表于 2015-2-8 21:41:04

面向对象思想+CPP语法+算法+实践=学会,初期学习语法较重要,你写的代码编译器都“读”不懂,怎么行?

因胸联盟 发表于 2015-2-26 11:40:07

关于用类来控制C++的内存分配,应该算是C++的一个高级技法。写的好的C++程序,基本看不到delete与new。因为这些内存的分配,销毁都让一特殊的类去管理。

愤怒的大鸟 发表于 2015-3-8 14:42:56

记住: 不要放了基础. 多实践. 学程序时养成好习惯. 这包括程序要写得清晰.明了.就像写作一样.

精灵巫婆 发表于 2015-3-16 03:36:53

我也学习了几天VB,然后不敢示弱得心把我拉回去,也不知道怎么回事,有一天灵感光顾,就这样,轻松进门,只用了一周。以后学习数据库编程,Socket编程也遇到类似得情况,

乐观 发表于 2015-3-22 20:06:45

事必躬行。初学者开始最爱犯得毛病就是看书不动手,尽信书不如无书(我也反对),语言和平台有关,任何平台都不是绝对支持标准。
页: [1]
查看完整版本: 来讲讲:用C言语写的程序不平安