华为OD技术面八股文真题_C++_3

华为OD技术面八股文真题_C++_3

文章目录

变量的声明和定义的区别

  • 变量的声明是告诉编译器变量的名称和类型,不分配存储空间;
  • 变量的定义会为变量分配存储空间并建立实体。
  • 一个变量可以在多个地方声明,但只能在一个地方定义。 使用 extern 修饰的变量通常是声明,表示该变量在其它文件中定义,但 如果 extern 变量带初始化,则该语句仍然属于定义。

内存泄露是什么意思?怎么避免内存泄露

内存泄漏是指程序在动态申请内存后,后续失去对该内存的控制,导致这块内存无法被释放,从而造成内存资源浪费的现象。内存被申请了,却释放不了

内存泄漏的危害如下:

  1. 程序内存占用不断增大,导致系统可用内存减少,性能下降。
  2. 严重时可能导致程序崩溃。
  3. 服务长期运行最终会导致宕机。

常见避免内存泄漏的方案:

  1. RAII(资源获取即初始化)使用对象生命周期自动管理资源。
  2. 尽量使用智能指针/STL容器代替裸指针。
  3. new/delete,malloc/free保证成对出现。
  4. delete将指针置空。

怎么排查内存泄漏,遇到内存泄漏情况,一般怎么解决

  1. 通过监控系统观察系统中运行中内存是否持续上涨,且无法回落。其次在测试环境稳定复现<

Read more

【C++经典例题】字符串转整数(atoi)的实现与解析

【C++经典例题】字符串转整数(atoi)的实现与解析

💓 博客主页:倔强的石头的ZEEKLOG主页             📝Gitee主页:倔强的石头的gitee主页             ⏩ 文章专栏:C++经典例题                                   期待您的关注   目录 一、问题描述 二、解题思路 三、代码实现 四、代码逻辑详解 1. 变量初始化 2. 忽略前导空格 3. 处理符号 4. 转换数字 5. 返回结果     一、问题描述 LCR 192. 把字符串转换成整数 (atoi) - 力扣(LeetCode) 在编程中,经常会遇到将字符串转换为整数的需求,就像标准库中的 atoi 函数一样。 本题要求实现一个 myAtoi 函数,将输入的字符串转换为 32 位有符号整数,具体规则如下:   1. 读入字符串并丢弃无用的前导空格。

By Ne0inhk
Effective Modern C++ 条款37:使std::thread在所有路径最后都不可结合

Effective Modern C++ 条款37:使std::thread在所有路径最后都不可结合

Effective Modern C++ 条款37:使std::thread在所有路径最后都不可结合 * 引言:线程生命周期的关键问题 * 线程的两种状态:可结合与不可结合 * 可结合(Joinable)状态的特征 * 不可结合(Unjoinable)状态的四种情况 * 为什么可结合性如此重要? * 两种被拒绝的替代方案 * RAII拯救方案:ThreadRAII类 * ThreadRAII实现详解 * 关键设计决策 * 实际应用案例 * 高级讨论:何时选择join或detach * 性能考量与最佳实践 * 结论:让线程管理无忧 BiliBili上对应的视频为:https://www.bilibili.com/video/BV1iZZgBiE9j 引言:线程生命周期的关键问题 在多线程程序设计中,std::thread的管理是一个看似简单实则暗藏玄机的话题。想象一下,你精心设计的并发程序在大多数情况下运行良好,却在某些边缘情况下突然崩溃——这正是许多开发者在使用原生线程时遇到的噩梦场景。本文将深入探讨std::thread对象

By Ne0inhk
《C++ 动态规划》第001-002题:第N个泰波拉契数,三步问题

《C++ 动态规划》第001-002题:第N个泰波拉契数,三步问题

🔥个人主页:Cx330🌸 ❄️个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》《C++知识分享》 《优选算法指南-必刷经典100题》《Linux操作系统》:从入门到入魔 《Git深度解析》:版本管理实战全解 🌟心向往之行必能至 🎥Cx330🌸的简介: 目录 前言: 01.第N个泰波拉契数 算法原理(动态规划): 思路: 解法代码(C++): 博主手记(字体还请见谅哈): 02.三步问题 算法原理(动态规划): 思路: 解法代码(C++): 博主手记(字体还请见谅哈): 结尾: 前言: 聚焦算法题实战,系统讲解三大核心板块:“精准定位最优解”——优选算法,“简化逻辑表达,系统性探索与剪枝优化”——递归与回溯,“以局部最优换全局高效”——贪心算法,讲解思路与代码实现,帮助大家快速提升代码能力 01.

By Ne0inhk
【C++】AVL树的底层以及实现

【C++】AVL树的底层以及实现

个人主页 文章目录 * ⭐一、AVL树的概念 * 🎉二、AVL树的性质 * 🏝️三、AVL树的实现 * 1. 树的基本结构 * 2. 树的插入 * 3. 树的旋转 * • 左单旋 * • 右单旋 * • 左右双旋 * • 右左双旋 * 🎡四、AVL树的其它功能 * 1. 树的查找 * 2. 树的遍历 * 3. 树的高度 * 4. 树的大小 * 🚀五、总结 * 1. AVL树的优缺点 * 2. 完整代码 ⭐一、AVL树的概念 AVL树是一种高度平衡的平衡二叉树,相比于搜索二叉树,它的特点在于左右子树都为AVL树且树的高度差的绝对值不超过1。 这里我们会引入一个新的概念叫做平衡因子。平衡因子也就是左右子树的高度差,我们可以通过平衡因子方便我们后续去观察和控制树是否平衡。 🎉二、AVL树的性质 AVL树主要有三大性质: 1.每棵树的左右子树都是AVL树。 2.左子树和右子树的高度之差的绝对值不超过1。 3.

By Ne0inhk