【嵌入式八股3】C++:内存管理与指针

1. static 关键字的作用及与 C 的区别

static 关键字在 C++ 中主要影响变量或函数的 生命周期作用域存储位置。其具体影响如下:

1.1 修饰局部变量

  • 存储位置:从 栈区 转移到 静态区
  • 生命周期:从局部生命周期变为全局生命周期。
  • 作用域:作用域保持为局部范围,即函数内或代码块内。

1.2 修饰模块内的全局变量(静态全局变量)

  • 存储位置:存储于 全局数据区的静态区
  • 作用域:作用域从 整个程序 限制为 当前文件。即使使用 extern 声明,也无法访问。
  • 生命周期:生命周期保持为程序执行期间。

1.3 修饰函数

  • 作用域:函数的作用域从 整个程序 限制为 当前文件。即使使用 extern 声明,也无法访问。

1.4 修饰 C++ 成员变量

  • 类外定义与初始化:例如,int A::_count = 0;,类内声明为 static int _count;
  • 共享性:该静态成员变量为该类的所有对象所共享。
  • 访问:通过 类名::成员变量名 进行访问。

1.5 修饰 C++ 成员函数

  • this 指针:静态成员函数没有隐式的 this 指针。
  • 访问限制:不能访问非静态成员(变量或函数)。
  • 调用限制:静态成员函数不能调用非静态成员函数,但非静态成员函数可以调用静态成员函数。

2. 指针与引用的区别

2.1 定义区别

  • 指针:指向一个对象,可以间接操作该对象。
  • 引用:目标变量的别名,可以直接操作。
int a = 996;
int *p = &a;  // p是指针,&获取地址
int &r = a;   // r是引用,&仅为标识符

2.2 主要区别

  1. 初始化:引用必须初始化,而指针不必。
  2. 修改:引用初始化后不可修改所引用的对象,而指针可以修改所指向的对象。
  3. 递增操作:指针递增操作是改变地址,引用递增操作是改变值。
  4. sizeof:指针的 sizeof 是指针的大小,引用的 sizeof 是数据的大小。

2.3 类型转换

  • 指针转换为引用:通过 *p 进行解引用,作为参数传入即可。
  • 引用转换为指针:通过 & 取地址即可。

3. 深拷贝与浅拷贝

3.1 浅拷贝

  • 浅拷贝是指增加了一个指向相同堆区的指针,这会导致在析构时重复释放相同的内存。
  • 默认的拷贝构造和赋值运算符通常执行的是浅拷贝。

3.2 深拷贝

  • 深拷贝是指在拷贝时,分配新的内存空间,并将内容复制到新的内存中。这样避免了在析构时重复释放内存的问题。

4. newmalloc 的区别

newmalloc 属性
语法 int *p = new int(0)int *p = new int int *p = (int*)malloc(sizeof(int))
初始化 可以初始化 不会初始化
函数与运算符 操作符,返回指定类型的

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

嵌入式八股/模拟面试拷打 文章被收录于专栏

一些八股模拟拷打Point,万一有点用呢

全部评论
指针引用区别清晰
点赞 回复 分享
发布于 03-06 20:01 山东
static用法很全面
点赞 回复 分享
发布于 03-03 11:24 陕西
static用法很全面
点赞 回复 分享
发布于 02-28 16:13 陕西

相关推荐

韶音科技-嵌入式面经韶音给我的感受还是很不错的,分享一手面经一面-hr面-30分钟主要聊聊家常,问题都比较常规吧,真诚回答就行二面-专业面-30分钟自我介绍想聊一聊哪个项目?项目是如何进行通信的?有哪些措施来保证数据的可靠性?讲一讲CRC校验讲一讲你了解的linux操作系统项目能实现哪些功能?多线程开发需要注意些什么?遇到哪些困难?为什么选择嵌入式开发方向?反问三面-专业面-30分钟自我介绍项目介绍介绍一下Linux操作系统线程和进程的区别,分别是怎么通信的用户空间和内核空间的访问方式内存映射的适应场景?内存映射可能出现什么问题?自旋锁和互斥锁的概念是什么对epoll的理解EMMC读写是怎么用的?手撕:一道简单链表题(口述思路)反问战略和营销很多HC!韶音科技25届补招内推启动拉!!!深圳市韶音科技有限公司(简称“韶音科技”)创立于2004年,是一家专注于电、声产品研发、设计、生产和营销的专精特新重点“小巨人”企业。还有大量需求!使用内推码简历优先筛选,有任何问题包括进度查询可以私信我,内推后在评论区留言【姓名缩写+岗位】,方便捞人和确认投递状态研发,营销,供应链,财务,法务,专利,人资,IT,设计超多米哈游岗位近7年营收增长超百倍的科技公司等你加入!【内推链接】https://app.mokahr.com/m/campus-recruitment/aftershokzhr/36940?recommendCode=DSe1vF9A&hash=%23%2Fjobs#/jobs【内推码】DSe1vF9A(内推简历有免笔试的机会!)使用内推码简历优先筛选,有任何问题包括进度查询可以私信我,内推后在评论区留言【姓名缩写+岗位】,方便捞人和确认投递状态 #春招#                                                     #内推#                                                     #内推码#                                                     #秋招#                                                     #韶音科技#                                                     #牛客创作赏金赛#                            
点赞 评论 收藏
分享
评论
4
11
分享

创作者周榜

更多
牛客网
牛客企业服务