面试八-存泄漏是什么,有哪几种,怎么解决?

news2024/9/24 19:23:14

 一、内存泄漏几种情况

         当使用基类指针指向派生类对象时,如果基类的析构函数不是虚函数,那么在使用基类指针来删除这个对象时,只会调用基类的析构函数,而不会调用派生类的析构函数。这就导致了派生类中的资源无法正确释放,从而可能导致内存泄漏或者未定义行为

二、 智能指针有内存泄漏的问题吗

  1. 循环引用(Circular References):如果存在循环引用(例如,两个对象相互持有对方的智能指针),会导致对象永远无法被释放,从而造成内存泄漏。为了避免循环引用,可以使用std::weak_ptr来打破循环。

  2. 裸指针转换(Raw Pointer Conversion):如果将智能指针转换为裸指针,并在转换后使用裸指针来管理资源,容易造成资源

  3. 泄漏。因为裸指针无法感知智能指针的生命周期,无法自动释放资源。应该尽量避免使用裸指针,或者在必要时使用智能指针的get()函数获取裸指针。

  4. 多线程环境下的问题:在多线程环境下,如果智能指针的引用计数没有正确地进行同步,可能会导致资源的提前释放或内存泄漏。因此,在多线程环境下,需要确保对智能指针的操作是线程安全的。

三、请说说new/delete与malloc/free的区别?

       野指针是指指针指向的内存地址是随机的、未初始化的,或者指向的内存区域未经过分配。野指针可能是在创建指针后没有给它赋值(即未初始化指针),或者是在释放内存后未将指针置空,但继续使用该指针。 

四、 多态

         

  1. 静态多态(编译时多态)

    • 静态多态是在编译时确定调用的函数,通常通过重载(Overloading)来实现。重载是指在同一个作用域中定义了多个同名的函数,但它们的参数列表不同。编译器根据调用时的参数类型来选择合适的函数进行调用。这种多态性的实现方式是在编译时完成的,因此也称为编译时多态。
    • 静态多态的优点是效率高,因为调用的函数在编译时就已经确定,无需在运行时进行额外的查找和计算。但缺点是对于同一个函数名,只能根据参数类型来进行选择,不能根据对象的实际类型来确定调用的函数。
  2. 动态多态(运行时多态)

    • 动态多态是在运行时确定调用的函数,通常通过虚函数(Virtual Function)和继承来实现。虚函数是在基类中声明为虚函数的函数,它可以在派生类中进行重写(Override)。当基类指针或引用指向派生类对象,并通过虚函数调用时,根据对象的实际类型来确定调用的函数,实现动态绑定。这种多态性的实现方式是在运行时完成的,因此也称为运行时多态。
    • 动态多态的优点是能够根据对象的实际类型来确定调用的函数,实现灵活的多态性。但缺点是在运行时需要额外的开销来查找虚函数表并确定调用的函数,可能会有一定的性能损失。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1706206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端使用JavaScript实现一个LRU缓存

引言 LRU(Least Recently Used)算法是一种广泛应用于内存管理和缓存系统的策略,在微前端、状态管理以及性能优化等场景下,合理使用缓存机制能够有效提升应用性能。本文将介绍LRU算法的基本原理,并通过JavaScript实现案…

MySQL(进阶)--索引

目录 一.存储引擎 1.MySQL体系结构​编辑 2.存储引擎简介 3.存储引擎特点 (1.InnoDB (2.MyISAM (3.Memory 4.存储引擎选择 二.索引 1.索引概述 2.索引结构 3.索引分类 4.索引语法 (1.创建索引 (2.查看索引 (3.删除索引 5.SQL性能分析 (1.SQL执行频率 (2.慢查…

Linux——Dockerfile部分参数(1)

在这里我们来整理一下docker容器、dockerfile、docker镜像的关系: dockerfile是面向开发的,发布项目做镜像的时候就要编写dockerfile文件。 dockerfile:构建文件,定义了一切的步骤,源代码。 dockerImanges&#xff1a…

为什么Facebook Marketplace无法使用?如何解决?

Facebook Marketplace是一个允许用户买卖商品的平台,由于其在Facebook内的便捷性,它逐渐成为了一个受欢迎的在线交易市场。然而,做Facebook跨境电商,很多人会面临的情况就是无法使用Facebook Marketplace。这到底是什么原因&#…

PSexec工具横向移动

一. 其他横向工具和命令介绍 之前我们讲解了IPC,PTH,PTK,PTH,其实这些东西都是用来进行认证的 IPC:使用明文的账号密码进行认证 PTH:使用NTLM-hash值进行认证 PTK:使用AES秘钥进行认证 PTT:使用票据进行认证认证通过之后如何实现远程上线内网其他的机器&#xff0…

23种设计模式全面总结 | 快速复习(附PDF+MD版本)

本篇文章是对于23种设计模式的一个全面的总结,受限于文章篇幅无法对每个设计模式做到全面的解析,但几乎每个设计模式都提供了案例和类图结构,非常适合快速复习和在学习设计模式之前的全预习把握。 💡文章的 pdf markdown 版本可通…

智能座舱-车载声学技术训练营

语音交互赋能车载智能终端,成为智能座舱生态构建的核心功能 曾几何时,至少十年前,车内语音交互,大家都认为是“智障”阶段,基本上除了难用作为评价找不到其他的形容词做修饰。 但是随着技术的不断发展,特别…

2024年哪款充电宝好?热门罗马仕、西圣、倍思充电宝全方面实测

在这个人人都离不开手机的时代,出门坐车需要用到手机刷卡,吃饭点外卖需要用到手机,做旅游攻略需要用到手机等等,如果是出门一天的话不带充电宝,手机基本是不能够撑回到家的,这时候就需要一个充电宝辅助我们…

整理前端新出的操作工具好用又好玩(Custom Formatter,Oxlint,Nuxt DevTools,component-party)

1.使用Custom Formatter 使vue3中的reactive object 在Chrome在console中更易理解的方式展现 启用步骤: 1.打开控制台,然后打开console设置 2.前往proferences中的Console,勾选Enable custom formatters选项 3.刷新页面 2.使用css Overv…

【NumPy】权威指南:使用NumPy的percentile函数进行百分位数计算

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

2024最新(PC+WEB+IOS+Android)即时通讯系统客户端仿默往IM源码下载

2024最新(PCWEBIOSAndroid)即时通讯系统客户端仿默往IM源码下载(总大小约2.4G) 系统功能配置灵活、海量并发、稳定可靠、数据安全,2小时快速部署、数据安全、单聊群聊、系统通知等通信功能,支持App、PC、Web等多端快速接入。 群功能&#xf…

【小米手环7】表盘修改/制作指南

2024年了还有人用小米手环7么? 5月10号得到我的小米手环7nfc,随之开启了我对表盘制作的探索之旅。~历时18天,终于让我成功修改了官方表盘——荧光电子!表盘:羽球人的荧光电子已上传至表盘自定义工具app。 接下来&…

将x减到0的最小操作(滑动窗口)

算法原理: 第一眼看到这个题的时候,我真的想不到它到底是怎么和滑动窗口联系起来的,在我的脑海里只有一个简单的双指针。直到我看过了题解,才明白原来是这么回事:先看题目是求最小操作数,此时你一定不要先…

二叉树顺序结构实现【堆的实现】【详细图解】

P. S.:以下代码均在VS2019环境下测试,不代表所有编译器均可通过。 P. S.:测试代码均未展示头文件stdio.h的声明,使用时请自行添加。 目录 1、二叉树的顺序结构2、堆的概念3、堆的实现3.1 堆实现的前提3.1.1 向上调整3.1.2 向下调…

网络安全行为可控定义以及表现内容简述

在数字化快速发展的今天,网络安全已成为国家和企业不可或缺的防线。据统计,网络攻击事件频发,给全球经济带来了巨大损失。因此,确保网络安全行为可控显得尤为重要。今天我们来聊聊网络安全行为可控定义以及表现内容。 网络安全行为…

音视频开发9 FFmpeg 解复用框架说明,重要API说明

一,播放器框架 二 常用音视频术语 容器/文件(Conainer/File): 即特定格式的多媒体文件, 比如mp4、flv、mkv等。 媒体流(Stream): 表示时间轴上的一段连续数据&#xff0…

维护课堂纪律的重要性

在课堂上,老师们是否经常遇到这样的情况:孩子们交头接耳,小动作不断,甚至有人偷偷玩手机?这些行为长让老师感到头疼,但作为老师,是否思考过,维护课堂纪律的重要性究竟何在&#xff1…

生信网络学院|05月31日《SOLIDWORKS Manage 产品周期管理》

课程主题:SOLIDWORKS Manage 产品周期管理 课程时间:2024年05月31日 14:00-14:30 主讲人:付舰 生信科技 PLM实施顾问 1、SOLIDWORKS Manage介绍 2、周期流程管理 3、产品项目管理 4、项目会议管理 5、项目问题管理 安装腾讯会议客户端…

java配置文件解析yml/xml/properties文件

XML 以mybatis.xml:获取所有Environment中的数据库并连接session为例 import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException;import javax.xml.parsers.DocumentBuilder; impo…

第十二周 5.21面向对象的三大特性(封装、继承、多态)(二)

三、多态 1.理解: (1)多态:父类型的引用存储不同子类型的对象 父类类名 引用名 new 子类类名(); 引用 对象 父类型 子类型 …