常见面试题之RAII

简介: 常见面试题之RAII

面试时碰到这么一道面试题,面试官说请谈一谈RAII。


其实就是Resouce Acquisition Is Initialization,资源获取即初始化。


抓住两个点。1,获取资源后立即放进管理对象。


2,管理对象运用析构函数确保资源被释放。


如果用自己的话说:这是c++管理资源,避免内存泄漏的一种方式。典型的应用是智能指针,创建对象的时候使用智能指针接管,离开其作用域自动释放资源。


如果想回答得艺术一点,可以引用自己看过的书。Effective C++ 里面的条款13 use objects to manage resouces(用对象管理资源)这一节,正是谈论的这个问题。

相关文章
|
安全 C++
C++进阶 智能指针(下)
C++进阶 智能指针(下)
41 0
|
30天前
|
存储 安全 Java
面试题:再谈Synchronized实现原理!
面试题:再谈Synchronized实现原理!
|
5月前
|
C++ 容器
【编程技巧】 C++11智能指针
C++11引入了智能指针以自动管理内存,防止内存泄漏和悬挂指针: - `shared_ptr`:引用计数,多所有权,适用于多个对象共享资源。 - `unique_ptr`:独占所有权,更轻量级,适用于单一对象所有者。 - `weak_ptr`:弱引用,不增加引用计数,解决`shared_ptr`循环引用问题。 ## shared_ptr - 支持引用计数,所有者共同负责资源释放。 - 创建方式:空指针、new操作、拷贝构造/移动构造,以及自定义删除器。 - 提供`operator*`和`operator->`,以及`reset`、`swap`等方法。 ## unique_ptr
253 10
|
3月前
|
存储 Java 程序员
面向对象编程(C++篇4)——RAII
面向对象编程(C++篇4)——RAII
35 0
|
4月前
|
调度 C语言
深入浅出:C语言线程以及线程锁
线程锁的基本思想是,只有一个线程能持有锁,其他试图获取锁的线程将被阻塞,直到锁被释放。这样,锁就确保了在任何时刻,只有一个线程能够访问临界区(即需要保护的代码段或数据),从而保证了数据的完整性和一致性。 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。一个进程可以包含一个或多个线程,而每个线程都有自己的指令指针和寄存器状态,它们共享进程的资源,如内存空间、文件句柄和网络连接等。 线程锁的概念
145 1
|
6月前
|
存储 监控 NoSQL
一次由于八股文引起的内存泄漏
本文描述了一次由于对Spring Bean生命周期理解不当导致的Java应用程序内存泄漏问题。开发者在`BeanPostProcessor`接口的实现中错误地在每次Bean初始化时创建了OSS客户端,但没有正确关闭连接管理器,导致连接池不断增长,最终引发内存泄漏。在初次修复跨单元访问问题后,系统仍出现Full GC,通过分析发现OSS客户端的初始化代码因接口实现错误而被多次调用,进一步加剧了内存泄漏。通过改用`InitializingBean`接口并正确实现初始化逻辑,问题得以解决。文章强调了基础知识的重要性,即使是面试中常见的“八股文”知识,也是实际工作中解决问题的关键。
|
5月前
|
安全 Java 开发者
一文弄懂synchronized
一文弄懂synchronized
74 0
|
6月前
|
存储 算法 Java
到底什么是AQS?面试时你能说明白吗!
【5月更文挑战第1天】到底什么是AQS?面试时你能说明白吗!
68 4
|
6月前
|
C++
【C++11(三)】智能指针详解--RAII思想&循环引用问题
【C++11(三)】智能指针详解--RAII思想&循环引用问题
|
安全
多线程访问同步方法的7种情况(面试常考)
多线程访问同步方法的7种情况(面试常考)
64 0
多线程访问同步方法的7种情况(面试常考)