07 2022 档案

摘要:问题描述 解决思路 依次遍历每一层,把当前层的节点值都加入到当前层的数值结果数组中 同时把当前层所有下层子节点加入到下层节点队列 重复执行以上过程 实现代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; 阅读全文
posted @ 2022-07-24 15:59 飞天赤狐 阅读(14) 评论(0) 推荐(0) 编辑
摘要:隐式类型转换介绍 c++编译时会在不同类型间进行自动转换, 因此使用不同数据类型进行比较、赋值等操作时, 可能不会报错,但可能因为忽略这些隐式类型转换而产生问题,而且不易排查 分场景代码示例 int负数值隐式转换为unsigned int 如下示例代码: #include <iostream> us 阅读全文
posted @ 2022-07-24 11:30 飞天赤狐 阅读(78) 评论(0) 推荐(0) 编辑
摘要:问题场景 在一段处理开始时new一个对象, 进行对象的构造或其他处理, 最后返回对象的指针, 但存在对象构造时check不合法的情况,这种情况下返回nullptr, 为避免内存泄露需要在返回nullptr的分支进行delete处理,由于分支可能较多,这里可能会遗漏delete,另外每个分支重复的加d 阅读全文
posted @ 2022-07-23 10:47 飞天赤狐 阅读(30) 评论(0) 推荐(0) 编辑
摘要:什么是移动语义 解决什么问题 在C++中如果不使用指针, 那么return一个对象的行为会触发copy构造函数, 带来额外开销 如下: Person MakePerson() { Person p; p.name = "WangLiang"; p.tel = "13888888888"; p.add 阅读全文
posted @ 2022-07-19 08:31 飞天赤狐 阅读(91) 评论(0) 推荐(0) 编辑
摘要:std::bind介绍 std::bind用于给函数绑定预设的参数, 这样实际上也可以给函数带上状态, 起到类似闭包的效果 以下是bind的几种用法 std::bind普通函数 看示例代码, 这里使用 std::placeholders::_1, 表达的是第一个参数的占位符 第2个参数预设为100, 阅读全文
posted @ 2022-07-15 07:24 飞天赤狐 阅读(227) 评论(0) 推荐(0) 编辑
摘要:lambda表达式是什么 lambda表达式实际是一个匿名函数指针, 如下示例代码: #include <iostream> using namespace std; int main(int argc, char* argv[]) { auto sum = [](int a, int b){ret 阅读全文
posted @ 2022-07-12 07:56 飞天赤狐 阅读(23) 评论(0) 推荐(0) 编辑
摘要:问题场景 有些不应该被复制的对象, 被复制了, 复制前后的对象都持有同一指针成员, 析构时重复释放造成内存异常,程序coredump 示例代码 #include <iostream> #include <string> using namespace std; class Person { publ 阅读全文
posted @ 2022-07-10 22:38 飞天赤狐 阅读(69) 评论(0) 推荐(0) 编辑
摘要:问题场景 在访问数组时没有判断数组size, 导致访问的索引号超过了数组size产生访问越界,程序出现异常行为 示例代码 实际情况比较多, 我们来展开说明下 原生数组访问越界 #include <iostream> using namespace std; void ArrayOut() { int 阅读全文
posted @ 2022-07-09 11:08 飞天赤狐 阅读(408) 评论(0) 推荐(0) 编辑
摘要:问题场景 一般是局部变量出作用域后继续访问, 导致指针指向一块已经无效的内存 听起来比较简单,但在实际工程应用中,这类情况还是经常出现的,而且一般需要借助asan等内存异常检测工具才能比较快的排查到 示例代码 #include <iostream> #include <string> using n 阅读全文
posted @ 2022-07-09 10:24 飞天赤狐 阅读(49) 评论(0) 推荐(0) 编辑
摘要:编写除法计算时,一定要注意判断除数是否为0 这条比较简单 如下: #include <iostream> using namespace std; int main(int argc, char* argv[]) { int d = 0; float result = 100/d; cout << 阅读全文
posted @ 2022-07-09 10:03 飞天赤狐 阅读(261) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示