VS2017的C++开发心得(十一)调试——内存溢出和内存泄漏(上)

VS的调试功能非常强大,一方面是覆盖面很广可以调试本地程序,也可以调试远程的Linux服务器程序。另一方面是内容很丰富,基于汇编调试之上,可以查看内存信息,线程堆栈,甚至GPU、CPU的占用情况,还有DX12的图形调试以及NVIDIA的Nsight的CUDA调试。基本满足你从开发到优化到debug到发布的所有需求。

本章介绍VS下的本地程序的调试方法。

本地程序的调试主要分为两种,一种是主动调试,一种是被动调试。主动调试:即编译并运行,就是“本地Windows调试器”。被动调试:这个需求比较灵活,一般是程序已经发布了release版本,直接双击exe运行而不依赖于VS了。exe运行过程中可能会报错,可能状态异常,这时候我们需要通过VS去链接到这个exe进程进行调试。

下面先介绍如何调试两种最基础的bug:内存溢出和内存泄漏,最后再介绍下如何调试运行中的exe。

内存溢出:也就是内存访问越界,一般出现于数组和指针的使用中。这是一个比较致命的bug。一般情况下,程序都会立即崩溃,提示“0x????????内存读取访问权限冲突”,也可能不会崩溃,但是你的程序总是会有时候运行异常。

内存泄漏:相较于内存溢出,它的危害要小一些。泄漏就是申请的内存没有合理回收,导致出现不可使用的内存片段,大量的泄漏最终还是会导致程序无法申请到新的内存而崩溃。

下面一段代码则一下同时出现这两种错误:

#include "Project1/a.h"
#include <stdio.h>

double test()
{
	double *t = new double[
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值