IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c/c++语法陷阱 -> 正文阅读

[C++知识库]c/c++语法陷阱

记录工作中遇到的bug(持续更新)

1、逗号运算符的错误使用

先看以下代码

这个代码我的原意是想让循环次数取较小的值,但是结果却发生了偏差,实际项目中就会出现内存越界。

回顾一下 for和逗号运算符的用法

for(表达式1; 表达式2; 表达式3){
????语句块
}
它的运行过程为:
1) 先执行“表达式1”。
2) 再执行“表达式2”,如果它的值为真(非0),则执行循环体,否则结束循环。
3) 执行完循环体后再执行“表达式3”。
4) 重复执行步骤 2) 和 3),直到“表达式2”的值为假,就结束循环。

整个逗号表达式的值为系列中最后一个表达式的值

所以for循环中如果有逗号运算符,那么整个逗号表达式的最后一个表达式为真循环就会继续运行下去。

因此正确写法

2、结构体类型的变量的初始化

常见的两种初始化方式

struct? stList? A = {}; 或者?struct? stList? A;memset(&A, 0, sizeof(struct? stList));

第一种方式实际上只给结构体中的每个成员变量初始化了,由于结构体对齐的原则,成员之间内存碎片是没有初始化的,虽然很多时候系统默认值就是0,但是我们并不能指望所有系统都是这样做的。

第二种则将整个结构体都初始化了。

通过示例程序帮助理解一下:

3、free/delete之后一定要赋NULL

delete/free一个指针之后,只是回收指针指向位置的空间,而指针本身的值不变。如果不赋NULL,后续用到此指针后就会发生莫名其妙的错误。

工作中遇到了一个设置OSD多次后偶现设备挂机的问题,且使用gdb也无法定位到问题。无奈使用打印大法,多次复现后发现以下代码段。

设置osd的时候需要加载用到的字库到内存,最多加载100个,后续如果有新的字需要加载 且100个已经全部占用时,会先销毁后面50个,给新的字形使用。由于销毁的时候delete之后没有赋NULL,导致 p_ttf->stUsedGlyf.p_letter[i]不等于NULL,因此导致重复释放,造成挂机。

?

?

?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:34:13  更:2021-07-30 12:36:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 23:04:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码