当前位置:网站首页>关于c语言的调试技巧
关于c语言的调试技巧
2022-08-02 14:09:00 【为java献身】
关于vs中该代码出现死循环的分析
主要是看了鹏哥的视频 来进行总结加深印象
要先知道两个知识点;
1:
栈区的默认使用:
先使用高地址处的空间
再使用低地址处的空间
2:
数组随着下标的增长
地址是由低到高变化的
具体分析:
因为在main中创建了两个局部变量,根据栈区的存放规则,我们知道变量i存放的地址会在数组arr上面,当将数组里面的内容全部改成0之后,循环并未停止,出现越界访问现象,,在越界访问的时候可能可能遇到i,则出现改变i的值出现死循环的情况
情况分析:
在vc6.0的情况下 小于等于10的情况下就出现了死循环
在gcc编译器下 小于等于11的情况下就死循环
在vs的情况下 小于等于12的情况下出现死循环
还未执行时vs就会出现提示 但是很不明显 手动移上去时候出现
注意点:在debug版本和relese版本下 ,出现不同情况,在relese版本下,代码正常运行,也说明了relese也对内存布局进行了优化
最后总结:如何写出易调试的代码
优秀的代码:
1.代码运行正常
2.bug很少
3.效率高
4.可读性好
5.可维护性高
6.注释清晰
7.文档齐全
常见的coding技巧:
1.尽量使用assret
2.尽量使用const
3.养成良好的编码风格
4.添加必要的注释
5.避免编码的陷阱
边栏推荐
猜你喜欢
随机推荐
Win10系统设置application identity自动提示拒绝访问怎么办
2022TI杯D题混沌信号产生实验装置
FP6195耐压60V电流降压3.3V5V模块供电方案
jest测试,组件测试
5. Use RecyclerView to elegantly achieve waterfall effect
LLVM系列第十七章:控制流语句for
LORA芯片ASR6601支持M4内核的远距离传输芯片
PyTorch⑩---卷积神经网络_一个小的神经网络搭建
arm ldr系列指令
图像配置分类及名词解释
Bash shell位置参数
GICv3/v4-软件概述
LLVM系列第二十章:写一个简单的Function Pass
Binder ServiceManager解析
NER(命名体识别)之 FLAT模型
FP7128内置MOS降压恒流调光深度0.01%高辉共阳调光方案
CI24R1小模块2.4G收发模块无线通信低成本兼容si24r1/XN297超低功耗
“非图灵完备”到底意味着什么
【我的电赛日记(完结)---2021全国大学生电子设计竞赛全国一等奖】A题:信号失真度测量装置
数据偏见的背后是什么