c++由于疏忽出现的bug以及一定要注意的问题(内存泄漏、-1.#QNAN、无法正常启动0xc000007b、 switch break、vs无法启动程序 拒绝访问)

1.内存泄漏

最近在用别人的代码时发现内存一直在泄漏,而且我是批处理文件,这个问题必须解决。

再一番查找之后发现:

首先 new 和 delete一定要对应,不然肯定会出现内存泄漏的问题

其次,在对类用delete删除时是调用其析构函数的,因此在写构造函数时一定要对应写好析构函数,把构造函数中new的对象都要在析构函数delete掉。

如果在任务管理器中看到内存有减小的时候然后又增大说明delete掉了一部分,再去检查一下是不是还有哪些没有delete.

我这次是代码不多,直接通过注释然后调用某个函数一点点排除发生泄漏的部分,师弟给了一个vld的链接https://blog.csdn.net/invisible_sky/article/details/78206380 但是我用它没有查找到出问题的地方,说明这个软件也不是全能的。回头可以再研究研究。

2.-1.#QNAN(忘记初始化导致的问题)

最近有个bug是由于一个指针忘记初始化了,导致会产生输出-1.#QNAN的问题

调试时可以从最终输出-1.#QNAN这个变量查起,用isnan()这个函数,然后一步一步往前推问题出在哪

3. 应用程序无法正常启动0xc000007b

是因为缺少.dll文件,需要把相应地动态链接库放在.exe文件夹下。 我这次是缺少freeglut.dll

4. switch 和case导致的 bug

switch (key)
{
case 'a':
{
bShowAxis = !bShowAxis;
break;
}

}

如果要执行单个case最后必须加上break,否则每个case都会执行

5.VS2013->无法启动程序 拒绝访问 在命令行运行会发现窗口自动关闭并且.exe文件会被删除

解决办法:

1.一般重启就能解决
2.管理员身份运行
3.关闭杀毒软件
4.是不是开过一些网游,比如TGP
5.是不是网购:一般来说是被【360】一类的木马、病毒防护软件锁住了,看看屏幕右下角【360】小图标上是否有把锁?如果有,说明你正在打开类似【淘宝】一类的网络交易平台,此时360会自动启动木马防护程序,禁止陌生进程运行。把【淘宝】网页关闭,360上的锁会自动消失,你的程序就可以运行了。

最终退出360就可以了

posted @ 2018-12-26 14:56  Emma00  阅读(404)  评论(0编辑  收藏  举报