面筋

1.什么是c++原子操作?

c++原子操作是一种特殊的操作,可以在多线程并发执行的情况下,确保操作的原子性和同步性,避免了竞态条件和数据竞争的问题。

在C++中,原子操作是通过C++11标准引入的std::atomic模板类来实现的。std::atomic模板类是一个封装了原子操作的模板类,它提供了一组可用于原子操作的成员函数和操作符。

std::atomic支持的原子操作包括:

加法操作(+=)

减法操作(-=)

逻辑与操作(&=)

逻辑或操作(|=)

逻辑异或操作(^=)

交换操作(exchange)

加载操作(load)

存储操作(store)

比较交换操作(compare_exchange_strong和compare_exchange_weak)

这些原子操作可以保证对共享变量的读写操作是原子的,即在多线程并发的情况下,任何一个线程对共享变量的操作都不会与其他线程的操作产生冲突,从而确保了程序的正确性和可靠性。


2.野指针和悬空指针分别是什么?

野指针和悬空指针是C++中常见的指针问题,它们都是指针使用不当引起的问题。


野指针是指指向未知或无效内存地址的指针,它通常是一个未初始化的指针,或者是已经被释放的指针,但是程序仍然试图使用它来访问内存。使用野指针通常会导致程序崩溃、数据损坏等问题,因为它们可能会覆盖掉其他变量的内存空间,或者试图访问系统保留的内存区域。


悬空指针是指指向已释放的内存地址的指针,它通常是指向已经被delete或free释放掉的内存地址的指针,但是程序仍然试图使用它来访问内存。使用悬空指针也会导致程序崩溃、数据损坏等问题,因为已经被释放的内存可能已经被操作系统回收,或者已经被其他程序所使用。


为了避免野指针和悬空指针的问题,我们应该在使用指针之前初始化它们,并在使用完毕后将它们置为nullptr或者将其指向有效的内存地址。此外,我们还可以使用智能指针等现代C++中的工具来避免手动管理指针的问题,从而提高程序的可靠性和安全性。


3.悬空指针和野指针的联系?

悬空指针可以看作是野指针的一种特殊情况,即指向已经被释放的内存地址的指针。但野指针不一定是悬空指针,它可能指向任意的内存地址,包括未初始和已经释放的内存地址。

全部评论

相关推荐

吐泡泡的咸鱼:我也工作了几年了,也陆陆续续面试过不少人,就简历来说,第一眼学历不太够,你只能靠你的实习或者论文或者项目经历,然后你没有论文,没有含金量高的比赛和奖项,只能看实习和项目,实习来说,你写的实习经历完全不清楚你想找什么工作?行研?数据分析?且写的太少了,再看项目,这些项目先不说上过大学读过研究生的都知道很水,然后对你想找的岗位有什么帮助呢?项目和实习也完全不匹配啊,你好像在努力将你所有的经历都放在简历里想表现你的优秀,但是对于你想找的岗位来说,有什么用呢?最后只能获得岗位不匹配的评价。所以你需要明白你想要找的岗位要求是什么,是做什么的,比如产品经理,然后再看你的经历里有什么匹配的上这个岗位,或者对这个岗位以及这个岗位所在的公司有价值,再写到你的简历上
点赞 评论 收藏
分享
评论
8
50
分享

创作者周榜

更多
牛客网
牛客企业服务