【发际线大作战】C++学习记录之程序调试+常见错误(持续更新)

本文主要是介绍【发际线大作战】C++学习记录之程序调试+常见错误(持续更新),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

鲁迅先生曾说:“调试不学好,编程两行泪。”
在这里插入图片描述

每当想起那无数个调程序的日日夜夜
我不禁摸了摸的我的发际线
而发际线像是在躲避我一般
让我探索了好久

提前声明一下

  • 我用的是戴尔的笔记本
    所以快捷键啥的和各位可能不太一样
    (淦 为嘛都要加一个Fn键)
  • 本文参考资料如下:

VS下如何调试程序
如何调试程序及调试程序基本步骤、方法详解

程序崩溃情况排行榜

1.数组越界访问

  • 数组是从0开始,所以特别注意循环时定义i=0(除非特殊用处)

2.内存不足 无法释放

  • 错误警告为 CRT detected that the application wrote to memory after end of heap buffer:xxx
  • int *a,num=0;a=new int[num];
    cin>>num; free(a);
    观察上面这一小段代码,乍一看似乎没问题。但是运行时就会报错。
    为什么呢?
    当我们二维数组初始化时,并没有给足空间(num因为无初始化就过不了编译,所以被强行初始化为0.)
    而num=0意味着无空间,所以就无法释放。

3.其他莫名其妙的原因

  • 数组输出的时候,按理说应该是这样:
for(int i=0;i<n;i++)
{cout<<a[i];
}

然鹅 我当时是这么写的,而且还没觉得不对???

for(int i=0;i<n;i++)
{cout<<a[1];
}

乌鸡鲅鱼 😦

  • 该用&&时,用 || (我真是个人才
  • 将两个变量的值互换时,没搞懂赋值关系。即:换混了。
  • 文件取名不能加“ . ” ,错误为fatal error C1083: 无法打开包括文件:“”: No such file or directory
  • 蜜汁数字 -858993460 因为使用了未初始化的局部变量导致的错误。

程序调试

新手村—局部变量+断点组合拳

别告诉我你不知道断点是啥?
什么?真不知道?
行吧,接下来,我们来接受断点

断点

断点用于通知调试器何时何处暂停程序的执行。
你可以在你想要暂停执行的地方,点击鼠标右键—断点—插入断点。
断点这是断点工具条,设置断点成功后,可通过如下按钮进行调试。
在这里插入图片描述
从左到右,依次为:

启动调试(F5)
停止调试(shift+F5)
显示下一条语句

若设置为显示下一条语句,则这一行以黄色箭头标记,是程序继续执行的下一条语句。

逐语句

设置后,将一条一条执行。

逐语句

设置后,将一个方法一个方法执行。

跳出

类似于continue;

断点

查看断点窗口

局部变量窗口

启动调试模式时,自动弹出局部变量窗口,你可以清晰地看见每个变量的变化。如果没有自动弹出,手动也是可以的噢。
局部变量到这里,基本上是初学者必须掌握的调试技能

这篇关于【发际线大作战】C++学习记录之程序调试+常见错误(持续更新)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/339232

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�