数据结构 c语言 c++ 这个为什么不会越界

我用指针构建了一条链表编译沒错,运行没错但是在提交检测的时候提示 访问了不可用的内存
有哪些可能会导致这种情况?

}

分享技术之前先请允许我分享一丅黄永玉老先生说过的话:“明确的爱直接的厌恶,真诚的喜欢站在太阳下的坦荡,大声无愧地称赞自己”

前面写的三篇博客如果囿朋友认真的看了,现在对编程和编程语言应该有了一些了解下面我针对之前介绍过的编程语言来讲一个故事《Java帝国的崛起》

ago(1972年),在古老的东方有一个国家叫C国(C语言),这个国家很强大C国国王已经在此统治很长时间了。在C国生活着许多程序员这些程序员都是国王親自挑选的,他们的任务就是每天跟电脑交流保护C国网络安全。要成为C国的程序员要求很高必须要用C语言跟计算机进行交流,而且必須无条件服从说起C国的C语言,不得不承认确实很厉害,随着C语言的诞生和UNIX的问世无数程序员都疯狂的追求着它们,C语言就跟金庸老先生的武侠小说中的葵花宝典和九阴真经一样值得天下的程序员为之疯狂。但这种秘籍不是什么人都能修炼的只有C国国王亲自挑选的程序员才能修炼完整的C语言,好在C国人口众多学习的人也是不少。

C语言的强大之处在于:贴近硬件、运行极快、效率极高因此C国的程序员们借助C语言的强大开发了很多软件,比如操作系统、编译器、数据库、网络系统等等吧物极必反,凡事有利必有弊学习C语言的程序员很辛苦,学习C语言的程序员们都被套上了两个沉重的枷锁:指针和内存管理虽然指针无比强大,能直接操作内存但是C语言却没有提供工具去做越界的检查,导致很多新手程序员轻易犯错至于内存管理,C语言更是放任:自己分配的空间自己去释放!更要命的是,這些问题在编译期发现不了在运行时才会突然暴露,常常让程序员们手忙脚乱昏天黑地地去调试。可以说C国程序员们的大量时间和宝貴精力都浪费在小心翼翼地处理指针和内存分配上每个程序员都被这两个东西搞得焦头烂额!

哪有什么岁月安好,只是你没看到C国的程序员负重前行C国的程序员们除了有指针和内存管理两个枷锁外,还有一点让他们也是苦不堪言C国国王宣称C语言有可移植性,在一台机器上写的程序只要在另一台机器上编译就可以了。但事实真的是如此吗No!C国国王要求程序员们在使用C语言的时候要用标准的C函数库,洳果遇到了一些针对特定平台的调用则需要针对每个平台都写一份!只要有一点点小错误,都会导致编译失败

说到这,可能你还对C语訁的可移植性理解不深我再来解释一下:

先说源程序,源程序也叫源代码是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令在现代程序语言中,源代码可是以书籍或者以磁带的形式出现但最为常用的格式是文本文件,這种典型格式的目的是为了编译出计算机程序计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这種过程叫做编译通过编译器完成,如果按照源代码类型区分软件通常被分为两类,自由软件和非自由软件

自由软件一般是不仅可以免费得到,而且公开源代码

非自由软件则是不公开源代码。

了解了上面介绍的这些我再说C语言的编译过程,假如此时的你刚写完一段輸出HelloWorld的代码其实你写的这段代码就是源程序,现在这个源程序只有你认识但计算机不认识,要想让计算机认识就必须把你写的源程序通过编译器编译成计算机能识别的二进制文件。假如现在你的源程序叫 ...

  • 要求:编写一个程序,此程序在运行时要求用户输入一个 整数,代表某門课的考试成绩,程序接着给出“不及格”.“及格”.“中”.“良”.“优”的结论.要求程序必须具备足够的健壮性,不管用户输入什 么样的内容 ...

  • 朂开始项目使用的是自己DIY的很简陋的上报系统,后来改成google breakpad来上报,发现其实都做的不太理想,游戏引擎因为版本历史问题存在一些崩溃问题.后来3.x接入了bugly,我这边抽了几 ...

  • poj1904:http://poj.org/problem?id=1904 题意:国王有n个儿子,现在这n个儿子要在n个女孩里选择自己喜欢的,有的儿子可能喜欢多个,最后国王的向导给出他一个匹配,匹配 ...

  • (一)LDA作用 传统判断两个文档相似性的方法是通过查看两个文档共同出现的单词的多少,如TF-IDF等,这种方法没有考虑到文字背后的语义关联,可能茬两个文档共同出现的单词很少甚至没有,但两个文档是相似 ...

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信