出现运行时间错误_为什么visual c++ 6.0编程的时候,编译无错误,执行却错误了?...

编译性的语言,编译过程中的错误只是简单的语法错误排除,对于C语言的卡位显得更加的疏松,很多即使有很多警告一样能够编译通过,相对来讲c++编译的语法显得更加严密但也阻止不了在执行的时候出问题,有些错误是压根在编译的时候发现不了的。从事嵌入式开发十几年用的最多的编程语言属于C/C++,如何避免出现执行错误,不仅仅是表面上的语法细节问题,更加深层次的是代码逻辑问题。83a8d2eb8c401b6a6429ddb5d80e1961.png

现在根据嵌入式的一些开发经验总结下编译么有错误,但是执行起来却导致系统崩溃的几点原因

1.内存泄漏

这种问题在编译的时候根本是无法追查出来的,做过一个项目,有个同事增加了一个新的功能,自从加上这个新功能之后,运行48个小时基本上就会死机,发现到这个时间点之后内存就会消耗光了,因为早期的嵌入式设备的内存非常有限,非常容易被耗光。最后发现是C语言写的一行代码不停的申请内存,由于每次申请的内存字节数不是很多,但时间长了内存也会慢慢耗光,最后还是通过钩子函数追踪找到问题所在。6d1f88e6da3df6ddff1ae4137b850b45.png

在平常的开发过程中大块的内存泄漏问题一般比较容易查找,小块的内存泄漏查找的难度要多上好几倍,解决这种问题就是抓场景,特别是软件场景解决问题就是找到复现的关键点,一旦问题能够复现出来,基本上意味着问题已经解决了一半。

2.语法错误

语法细节上的错误,在编译的时候是无法直接看到的,举个简单的例子,直接分子为零,只有在运行的时候能发现,这一切就归属于语法错误,如果基本功扎实出现这种问题的概率会少很多,所以很多程序员容易忽略基本功的学习,觉得反正能够写代码,大不了直接在网上找代码,还不是一样能够完成任务。3db8268e1e769d13beb5a4317a7acbb6.png

这点C++编译的时候卡位会更加严格,初学C++的都会觉得比C语言编译起来费劲多了,这是C++吸取了C语言里面语法随意简单的一面,争取把问题发现在前面,所以C++运行的时候一些奇形怪状的错误相对少一些,C语言语法比较灵活,往往在追查问题的时候不太容易。

3.程序性能

一般经验丰富的程序员对这方面关注会多一点,有些程序运行一段时间就会变得非常缓慢,甚至卡死,这些原因就是深层次的代码逻辑以及架构的问题了,但再高深的架构也离不开基本的语法,编程语言基本功越扎实,技术自信度也就越强,也就越容易出创造性东西。afde29a87fd94fe2f4a2c8e170299a75.png

做一名程序员早晚都得在这个层面去思考,让自己逐渐在项目中成长,从项目中找到差距,是编程基本功问题还是编程思想出了问题,所以语法上的错误仅仅是表面的现象,出现过的错误怎么能不再下次出现了,审视每个在项目中遇到的问题。

一个程序员的成长过程就是先关注基本的语法错误,到提炼项目中的编程经验,到提升框架思想的过程,不要忽略编程过程中发现的每一个细节,每一次错误都是自己成长的机会。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值