.net报错路径中具有非法字符_满屏红色:C语言中最常见的这些报错,你经历过多少...

50a73e359d8a33d2d7cfe8da5e6e6715.png

相信大家在刚刚学习编程的过程中一定遇到过大片的红色吧,这些让大家看着头疼的报错却是大家成长的见证呢,这里帮大家总结一下那些经常遇到的报错。

e36101d8d23fdab4733fe8216eabb04f.png


1、FORWARD_NULL
通常发生的情况是,一个指针先被判断是否等于NULL,然后指针被非法引用。
非法引用NULL的指针会导致程序崩溃。程序员在判断指针是否等于NULL时,没能正确的处理好,或者是忘记了NULL在代码路径的情况。
2、USE_AFTER_FREE
即使用已被释放的内存、同一指针被释放多次。
当内存被释放后,就不能再被安全的使用。而同一内存的多次释放通常会导致未定义的行为,包括内存冲突和程序崩溃。
引用已释放的指针也是非常危险的,因为指针的值不确定或者指针指向任意内存的位置。
在多线程的程序中,多次释放同一内存非常危险,因为已释放的内存可能已被另一线程申请,再次释放可能导致该线程的内存也被释放,在这种情况下,该线程使用已释放的内存,可能导致紊乱,同时很难被编译器跟踪。

49931a56dd6e14dde9d593c5842005ca.png


3、RESOURCE_LEAK
资源泄漏(内存泄漏)指变量在出了自己的作用范围后,占用的资源仍然驻守在内存里,没有被释放。
严重的内存泄漏能导致进程崩溃,即便是很小的内存泄漏,在系统长时间运行没有重启后,也会产生错误。如果内存泄漏是由用户输入或者网络数据触发,还会成为“拒绝服务攻击”的对象。
文件句柄或者网络套接字的泄漏会导致程序崩溃、拒绝服务攻击或者打开其他文件或套接字失败。操作系统通常会限制进程的文件句柄和套接字个数。当达到限制的最大值时,进程要申请新的资源时,首先要关闭一些已打开的资源。如果进程中存在资源泄漏,进程自己将没有办法回收这些资源,除非强行终止该进程。
多数情况下,这些泄漏通常发生在某个错误的路径,比如说,某个异常处理的分支。这种情况下,正确的做法应该是将程序跳转(GOTO)到该函数的出口,出口处应释放这些资源。
在C++中,RAII(the Resource Acquisition Is Initialization)机制能够自动的释放资源。RAII包括类的一个申请资源的构造函数和释放资源的析构函数。当一个类的局部变量声明后,当离开该变量的作用范围后,RAII会自动调用其析构函数释放资源,这同样也会保护throw异常导致的泄漏。

3d01d48d1683459e809825094761726d.png


4、NULL_RETURN
函数的返回值可能是NULL,所以使用函数返回值的变量一定要首先检查是否是NULL,否则就可能出错。
程序员经常不会去检查函数的返回值,而是直接以危险的方式去使用,可能会由于对NULL的非法引用,导致程序崩溃。
5、error C2143:语法错误:缺少“;”(在“*”的前面)
该错误主要是某类型数据未include,可能是头文件拼写错误、或者头文件名已经更改、或是头文件忘记“;”
解决办法:检查头文件是否更名、是否忘记结束的“;”

f186e1076f270bbb5b12e5bd72833ca8.png


6、error C1010:查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "StdAfx.h”
解决办法:在报错行所在的文件的最前面添加“#include "StdAfx.h”
7、error C1189:出现了WINDOWS.H already included. MFC apps must not #include 的处理办法。
解决办法:把#include提到最前面去就可以编译成功了。 8、error LNK2005: _DllMain@12 already defined in dllmain.obj
解决办法:你只需要在工程设置里面把WIN32,NDEBUG,_WINDOWS,_MBCS,_USRDLL,MSGBOX_EXPORTS,_WINDLL,_AFXDLL
中的_USRDLL,删除,就可以正确编译了 。
编程的学习本身就是离不开报错的,就算是大牛们也会遇到报错,面对报错不要慌张,根据报错去更好的完善自己的程序,让自己的程序更加的完美,为了帮助大家更好的学习,这里也是帮助大家整理了一些c/c++相关的基础知识点资料,还有相关的项目实战讲解资料,感兴趣的可以私聊分享更多。希望大家能够在报错和不断的实践中做的更好,成功一直都是给肯坚持的人准备的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值