华为OD技术面八股文真题_C++_3
文章目录
- 变量的声明和定义的区别
- 内存泄露是什么意思?怎么避免内存泄露
- 怎么排查内存泄漏,遇到内存泄漏情况,一般怎么解决
- 说一下define和const的区别
- define和typedef的区别
- 宏函数和内联函数的区别
- 类和结构体的区别
- 结构体(struct)和联合体(union)差别
- 静态库和动态库区别
- 介绍一下C++的编译过程
变量的声明和定义的区别
- 变量的声明是告诉编译器变量的名称和类型,不分配存储空间;
- 变量的定义会为变量分配存储空间并建立实体。
- 一个变量可以在多个地方声明,但只能在一个地方定义。 使用
extern修饰的变量通常是声明,表示该变量在其它文件中定义,但 如果 extern 变量带初始化,则该语句仍然属于定义。
内存泄露是什么意思?怎么避免内存泄露
内存泄漏是指程序在动态申请内存后,后续失去对该内存的控制,导致这块内存无法被释放,从而造成内存资源浪费的现象。内存被申请了,却释放不了。
内存泄漏的危害如下:
- 程序内存占用不断增大,导致系统可用内存减少,性能下降。
- 严重时可能导致程序崩溃。
- 服务长期运行最终会导致宕机。
常见避免内存泄漏的方案:
- RAII(资源获取即初始化)使用对象生命周期自动管理资源。
- 尽量使用智能指针/STL容器代替裸指针。
- new/delete,malloc/free保证成对出现。
- delete将指针置空。
怎么排查内存泄漏,遇到内存泄漏情况,一般怎么解决
- 通过监控系统观察系统中运行中内存是否持续上涨,且无法回落。其次在测试环境稳定复现<