所有栏目 | 云社区 美国云服务器[国内云主机商]
你的位置:首页 > 云社区 » 正文

为什么visual c++ 6.0编程的时候,编译无错误,执行却错误了?

发布时间:2020-04-15 16:44:11

资讯分类:visual  编程  编译  错误  编译  语法  内存
为什么visual c++ 6.0编程的时候,编译无错误,执行却错误了?

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

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

1.内存泄漏

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

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

2.语法错误

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

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

3.程序性能

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

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

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

希望能够帮到你。

为什么visual c++ 6.0编程的时候,编译无错误,执行却错误了?

编程异常分为两种类型,分别是已知异常和未知异常,不同的编程语言种可能叫法有所区别:

1.已知异常:就是通常大家所说的编程语法错误或是API种已经检查抛出的错误,编译阶段主要完成这种类型的错误检查校验.

2.未知异常:就是大家通常说的运行时异常,也叫做逻辑错误,就是程序业务逻辑出现问题导致的错误,比如空指针等.

你提的问题不具体,所以不知道你出现的究竟是什么问题,如果你的编译和运行环境不变,你出现的问题应该是程序逻辑问题,所以以后编程出现错误,最好将错误信息贴出来,这样才能够有效解决,谢谢……

为什么visual c++ 6.0编程的时候,编译无错误,执行却错误了?

程序可以在任何一个地方出错的,无论是内部原因,亦或是外部原因,都是无处不在的,所以别慌。

一般的,出现的bug都是可以找得到解决方法的,都有章可循。

实在搞不定,就重头再来,问题不大

为什么visual c++ 6.0编程的时候,编译无错误,执行却错误了?

执行有错很正常,软件你能看到的bug,都是这个样子的。要是脚本语言,连编译都没有,所有的错都是执行时。

为什么visual c++ 6.0编程的时候,编译无错误,执行却错误了?

错误分为编译错误跟运行错误,编译错误一般是指编译时的语法错误,编译器就可以发现错误并且提示。另一种是运行时错误,就是由于运行时输入的参数出现问题或者访问了访问不了的位置,权限不足等错误。

举个最简单的例子,你定义一个int i,然后10/i,这时候编译是没问题的,因为语法没问题,但是如果运行过程中你给i赋值成0,那就变成10/0,就会出现错误。

为什么visual c++ 6.0编程的时候,编译无错误,执行却错误了?

程序错误一般分两种 一种是语法错误 编译器一般都能检查出来 还有一种是逻辑错误 即使编译运行通过 结果也可能与你的预期大相敬亭 按照你的描述 可能是逻辑错误

为什么visual c++ 6.0编程的时候,编译无错误,执行却错误了?

编译通过说明没有语法错误。执行错误说明设计逻辑出现错误。

留言与评论(共有 0 条评论)
   
验证码:
Top