品牌 资讯 搭配 材料 时尚 热点 行业 首饰 玉石 行情

C++面试八股文:什么是空指针/野指针/悬垂指针?-全球动态

2023-07-01 05:34:33 来源:博客园

某日二师兄参加XXX科技公司的C++工程师开发岗位第30面:


(资料图片仅供参考)

面试官:什么是空指针?

二师兄:一般我们将等于0/NULL/nullptr的指针称为空指针。空指针不能被解引用,但是可以对空指针取地址。

int* p = nullptr;//空指针*p = 42;//空指针不可以解引用int** pp = &p//空指针可以取地址

面试官:你知道0/NULL/nullptr三者之间的区别吗?

二师兄:虽然三者都能定义空指针,但三者类型不同。

二师兄:0int类型,NULL在g++下是一个宏定义,而nullptr是有类型的;

#define NULL ((void *)0)typedef decltype(nullptr) nullptr_t;sizeof(0);// 4sizeof(NULL);//8sizeof(nullptr);//8

二师兄:在函数重载时,会根据实参的类型选择重载函数:

#include void fun(int) {std::cout << "int" << std::endl;}void fun(int*) {std::cout << "int*" << std::endl;}void fun(nullptr_t) {std::cout << "nullptr_t" << std::endl;}int main(int argc, char const *argv[]){    fun(0);//编译通过,匹配fun(int)    fun(NULL);//编译失败,可以匹配 fun(int) fun(int*) fun(nullptr_t)    fun(nullptr);//编译成功,匹配fun(nullptr_t)    return 0;}

二师兄:在C++11之后,建议使用nullptr定义空指针,因为它时有类型的,编译器能够对它进行类型检查。

面试官:什么是野指针?

二师兄:野指针突出一个野字,这个野就是状态未知的。它可能指向一块未知的区域:

int* p;//野指针,指针未初始化*p = 42;//对野指针解引用,未定义的操作

面试官:什么是垂悬指针?

二师兄:垂悬指针是指指针指向的内容已被释放,指针指向的对象的生命周期已结束。

int* p = new int(42);delete p;*p = 1024;//垂悬指针,指针指向的对象已被释放int* p = nullptr;{    int i = 42;    p = &i;}*p = 1024; //垂悬指针,指向的对象的生命周期已结束

面试官:如何解决空指针、野指针、垂悬指针带来的问题?

二师兄:主要可以从有以下几点入手:

1.在解引用指针之前,要判断指针是否为空。(解决空指针解引用问题)

2.对于定义的指针,一定要进行初始化(=nullptr)。(解决野指针问题)

3.对于释放过内容的指针,立即将指针置为nullptr。(解决垂悬指针、指针二次释放问题)

4.要注意长生命周期的指针不能指向短生命周期的对象。(解决垂悬指针问题)

5.C++11之后使用智能指针。

面试官:好的。那你知道什么是内存泄漏(memory leak)吗?

二师兄:内存泄漏是指分配的内存空间没有被正确释放的情况。常见的情况有malloc没有freenew没有deletenew[]delete混用。

面试官:如何防范内存泄漏问题?

二师兄:最简单的办法是使用资源获取即初始化(RAII)技术将资源放在类中管理,在类构造时获取资源(malloc/new),在类的析构函数中释放资源(free/delete),使用C++的构造和析构机制保证资源的正确申请和释放。

二师兄:我们常用的std::shared_ptrstd::unique_ptrstd::lock_guard就是采用这种技术管理资源。

面试官:最后一个问题,如何查找程序中是否出现了内存泄漏?

二师兄:只要有两种方法:

1.自己动手:把所有使用malloc/free的地方改成new/delete,重载全局的newdelete,并加入申请和释放内存容量的统计逻辑。

2.采用工具:可以使用诸如Valgrind(在Linux上)或Dr. Memory(在Windows上)等内存调试工具来检测内存泄漏。这些工具可以在运行程序时检测内存泄漏,并提供详细的报告和调试信息。

面试官:好的。今天的面试结束,请等消息。

今天的面试到这里就结束了,祝大家周末愉快~

关注我,带你21天“精通”C++!(狗头)

标签:

(责任编辑:)

相关文章

C++面试八股文:什么是空指针/野指针/悬垂指针?-全球动态

​某日二师兄参加XXX科技公司的C++工程师开发岗位第30面:>面试官:什么

2023-07-01 05:34:33

山西忻州市成立调查组:核查代县矿企安全事故瞒报问题

​针对6月29日下午有关媒体发布的代县矿企涉嫌安全事故瞒报问题的报道,

2023-07-01 05:08:42

欠小麻袋借贷三万人民币逾期了会坐牢吗

​金额不大,不会坐牢,不过会影响身份信用,导致买房不能使用公积金,严

2023-07-01 04:29:53

上海实业控股(00363.HK):6月30日南向资金减持1.4万股

​6月30日北向资金减持1 4万股上海实业控股(00363 HK)。近5个交易日中

2023-07-01 03:48:30

【光明时评】“人机共生”时代更须注重语言规范_环球今头条

​【光明时评】作者:陈丽湘(教育部语言文字应用研究所讲师)网络和数字

2023-07-01 02:43:11

世界新资讯:穿着民族服装的美女们唱歌敬酒,劝食客喝“高山流水”

​录制:刘国雄热闹的新式啤酒推销。在南宁百花岭吃饭,看到有穿着民族服

2023-07-01 01:21:47

神宗一郎

​1、神宗一郎是体育竞技手游《灌篮高手》里的一名得分后卫(SG)类球员

2023-07-01 01:06:52

澳大利亚主帅:即使本西无法参加世界杯 他也期望参加明年奥运会

​近期,澳大利亚国家队主帅古尔吉安接受了采访。他谈到了篮网球员西蒙斯

2023-07-01 00:58:22

乳酸菌素片多少钱一盒36片_乳酸菌素片多少钱一盒

​1、乳酸菌片的价格在20元 盒左右。乳酸菌片主要用于调节肠道菌群,可以

2023-07-01 00:50:58

穆迪将借助微软和OpenAI创建人工智能助手,以帮助客户评估风险|天天微头条

​信用评级和研究公司穆迪将使用微软和OpenAI来创建一个人工智能(161631)

2023-07-01 00:09:14

每日热文:安逸花逾期1年多少次会收到律师函?收到立案通知会不会坐牢?

​对于安逸花的借款人来说,逾期问题可能是一个令人担忧的情况。在本文中

2023-07-01 00:17:21

栖霞观_关于栖霞观概略

​1、邢台栖霞观位于张果老山,又名仙翁山,在邢台市西部15公里处。据山

2023-07-01 00:10:04

天天最资讯丨孔子犹江海文言文翻译 孔子犹江海文言文原文

​hello大家好,我是城乡经济网小晟来为大家解答以上问题,孔子犹江海文

2023-06-30 22:57:55

栖霞李博士夼滑石矿钻孔自然弯曲规律研究报告_关于栖霞李博士夼滑石矿钻孔自然弯曲规律研究报告概略

​1、《栖霞李博士夼滑石矿钻孔自然弯曲规律研究报告》是由山东省地质矿

2023-06-30 22:43:45

每日精选:现在几点_巴黎时间

​巴黎和咋中国处在不同时区,多的不说了。巴黎和中国北京时差7小时,只

2023-06-30 22:32:27

2023-06-29 19:29江苏高速公路最新路况实时播报 天天观察

​在我们出行前一定要把自己所去的地方的路况弄清楚,避免在出行过程当中

2023-06-30 22:21:28

中央企业9名管理人员接受纪律审查和监察调查 当前时讯

​日前,中央企业9名管理人员正接受纪律审查和监察调查,现通报如下:1

2023-06-30 22:10:08

adidas鞋子辨别真假 4步区分真假adidas鞋子_天天热议

​hello大家好,我是大学网网小航来为大家解答以上问题,adidas鞋子辨别

2023-06-30 21:53:21

天天观热点:快讯!俄媒:普京称,世界没有因制裁以及西方企业退出俄市场而崩溃

​据俄新社6月29日报道,俄罗斯总统普京出席由俄战略倡议署举办的“新时

2023-06-30 21:29:29

仁信新材:7月3日在深交所上市 股票代码301395-环球信息

​仁信新材6月29日晚间披露上市公告书,公司股票将于2023年7月3日在深圳

2023-06-30 20:59:45

法国多地骚乱持续 已有667人被捕 每日信息

​  当地时间6月30日早间,法国内政部长达尔马宁在社交媒体上称,尽管2

2023-06-30 20:43:18

国家外汇管理局:3月末我国银行业对外金融资产15683亿美元

​国家外汇管理局最新数据显示,3月末,我国银行业对外金融资产15683亿美

2023-06-30 19:44:30

漫评美国枪支暴力:“何时休”|天天热讯

​漫画作者:谭希光(人民网版权图片,未经授权,请勿转载。)近日,

2023-06-30 19:40:45

杭州亚运会第二次世界媒体大会召开

​新华社杭州6月28日电(记者胡佳丽、夏亮)为期两天的杭州亚运会第二次

2023-06-30 19:15:07

党建引领赋能高质量发展 金桥开发区新征程上谱新章

​为激励“两新”党组织全体党员对标先进,从党的光辉历程中汲取砥砺奋进

2023-06-30 18:44:50

【基差】06月29日国内商品基差数据一览

​【基差】更新啦!06月29日国内商品基差数据一览

2023-06-30 18:08:14

世界微速讯:蚕豆的做法大全窍门_蚕豆的做法大全

​1、原料:  新鲜蚕豆适量调料:  油、盐、糖、小葱清炒蚕豆做法:

2023-06-30 17:46:53

浦发银行西安分行:勇担金融宣教主力军 守护百姓“钱袋子”

​为切实帮助重点弱势群体掌握必要的金融知识和技能,提升风险防范意识和

2023-06-30 17:41:35

本川智能(300964.SZ)监事郑小春完成减持 合计减持4.63万股

​智通财经讯,本川智能(300964 SZ)公告,公司监事郑小春减持计划已实施

2023-06-30 17:16:01

【报资讯】立讯精密、中兴通讯等29股获特大单资金净流入超亿元

​Choice统计显示,6月29日,沪深两市全天特大单净流出亿元。个股来看,2

2023-06-30 17:10:04