自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

原创 五种IO模型与⾮阻塞IO

文章摘要: I/O(输入/输出)是冯诺依曼体系中的核心操作,涉及数据在内存与外设(如磁盘、网卡)间的传输。操作系统通过中断机制感知外设数据就绪,而非主动轮询,以提升效率。对于网络数据包,内核使用sk_buff结构管理,通过指针操作实现链路层、网络层、传输层的逐层解包,避免数据拷贝,仅调整指针指向即可完成封装与分用。sk_buff设计高效且兼容多种协议,但其实际结构复杂,包含多层元数据和状态控制,支持网络协议栈的高性能处理。这一机制体现了操作系统“先描述,再组织”的核心思想。

2025-08-08 20:38:01 951

原创 进程间关系与守护进程

本文介绍了Linux系统中进程组、会话、控制终端、作业控制及守护进程的相关概念。进程组是包含一个或多个进程的集合,具有唯一的进程组ID;会话是进程组的集合,每个会话有唯一的会话ID。控制终端是会话首进程打开的终端,用于管理前台和后台进程组。作业控制允许shell同时运行前台和后台作业,后台命令可通过作业号管理。守护进程是后台运行的特殊进程,提供系统服务,通常通过setsid函数创建,并具有独立运行、无终端关联等特点。文章还提供了自定义和库函数两种实现守护进程的方法。

2025-08-08 18:42:25 617

原创 数据链路层——MAC地址,ARP协议

本文摘要: 本文系统讲解了局域网通信原理及ARP协议工作机制。主要内容包括:1)数据链路层在局域网通信中的核心作用,重点解析了MAC地址、以太网帧格式及碰撞检测机制;2)详细阐述ARP协议工作原理,包括ARP报文格式、地址解析过程及ARP缓存表机制;3)深入分析ARP欺骗攻击原理,通过伪造IP-MAC映射实现中间人攻击;4)以Kali系统为例演示ARP断网攻击实验步骤。文章揭示了以太网共享资源的互斥特性,以及数据链路层与网络层的协同工作方式,为理解局域网通信安全提供了理论基础和实践指导。(149字)

2025-08-07 12:08:45 426

原创 MTU对IP,udp,tcp的影响

文章摘要: MTU(最大传输单元)是数据链路层对数据包大小的限制,不同网络类型具有不同MTU(如以太网为1500字节)。当IP数据包超过MTU时需进行分片传输,但这会增加丢包风险。IP协议通过报头中的标识、标志和片偏移字段实现分片与重组。UDP协议若数据超过1472字节(1500-20-8)会被分片,任一碎片丢失都会导致重组失败。TCP协议通过MSS(最大段大小)协商避免分片,在建立连接时双方交换MSS值并取较小者作为最终值。理解MTU和MSS的关系对网络性能优化至关重要。

2025-08-06 18:18:39 532

原创 ⽹络层协议——IP

本文介绍了IP协议的基本概念和工作原理。主要内容包括:1) IP地址分类,区分主机、路由器和节点;2) IPv4协议头格式详解,包括版本号、服务类型、分片控制等字段;3) 网段划分方法,从传统分类到现代的CIDR技术;4) 特殊IP地址用途;5) IP地址不足的解决方案如NAT技术;6) 私有IP与公网IP的区别;7) 路由过程及路由表工作原理。文章系统性地阐述了网络通信中IP层的核心知识要点,涵盖了从基础概念到实际应用的完整内容体系。

2025-08-06 12:00:00 747

原创 MySQL数据类型

本文介绍了MySQL中常用数据类型的分类和使用方法。数值类型包括tinyint、smallint等,主要区别是字节空间大小;浮点类型有float和decimal,后者精度更高;字符串类包含定长的char和变长的varchar。文章通过具体示例演示了各类型的存储范围、约束条件及使用场景,如tinyint范围[-128,127]、float(4,2)存储两位小数等。数据类型的选择应根据实际需求,既要考虑存储空间,也要保证数据精度和合法性。MySQL会严格检查数据范围,超出时直接报错而非截断。

2025-08-06 08:00:00 892

原创 传输层协议——TCP

TCP协议详解:传输控制与可靠性机制 摘要:TCP(传输控制协议)是一种面向连接的可靠传输协议。其核心机制包括:1)通过端口号识别进程,利用首部长度字段分离报头与有效载荷;2)采用序号与确认序号实现可靠传输,通过确认应答和重传机制保障数据完整性;3)窗口大小实现流量控制,避免接收缓冲区溢出;4)6种标志位(SYN/ACK等)管理连接状态;5)超时重传和快重传双重机制应对丢包问题;6)三次握手建立可靠连接。文章详细解析了TCP报头各字段功能,阐述了TCP如何通过复杂的内核级机制实现高效可靠的数据传输,同时兼顾

2025-08-05 14:44:28 829

原创 传输层协议——UDP

本文摘要: 端口号用于标识进程唯一性,与IP地址共同确保网络通信。知名端口号(0-1023)用于常用服务,动态端口(1024-65535)由系统分配。UDP协议具有无连接、不可靠、面向数据报的特点,其报文格式包含源/目的端口、长度和校验和字段。内核通过结构体struct sk_buff管理网络报文,封装和解包本质是调整数据指针位置。UDP无发送缓冲区,直接发送数据,接收缓冲区可能因满丢弃报文。一个进程可绑定多个端口,但一个端口只能被一个进程绑定。

2025-08-05 08:00:00 870

原创 HTTPS加密

HTTP协议存在三大安全隐患:明文传输导致数据易被窃听,无身份验证容易遭受钓鱼攻击,以及数据易被中间人篡改。HTTPS通过TLS/SSL协议对数据进行加密,结合对称加密的高效性和非对称加密的安全性,同时引入CA机构的数字证书机制,确保通信双方身份可信。数字证书包含服务器公钥和CA的数字签名,客户端通过内置的CA公钥验证证书合法性,防止中间人攻击。这种加密方案既保证了数据传输的安全性,又通过证书机制解决了密钥协商过程中的信任问题,是当前互联网安全通信的基础保障。

2025-08-04 21:06:46 747

原创 应⽤层协议HTTP

HTTP协议摘要 HTTP(超文本传输协议)是互联网中客户端与服务器通信的基础应用层协议。它定义了请求-响应模型,具有无连接、无状态特性。URL是HTTP请求的关键组成部分,包含协议、主机名、端口和路径等信息,特殊字符需通过urlencode转义。HTTP报文分为请求报文和响应报文两种格式,均包含首行、Header和Body三部分。常用的HTTP方法包括GET(获取资源)、POST(提交数据)和PUT(传输文件)等。状态码如200(成功)、404(未找到)等表示请求处理结果。常见Header字段包括Cont

2025-08-04 14:43:42 770

原创 Socket编程——TCP协议

本文介绍了TCP传输的基本原理和相关编程接口。TCP通过socket实现数据传输,每个socket包含输入和输出缓冲区。文章详细讲解了socket编程的核心API:socket()创建套接字、bind()绑定端口、listen()监听连接、accept()接受连接、connect()发起连接,以及send()/write()和recv()/read()等数据收发函数。特别强调了TCP缓冲区的自动管理机制,数据会在缓冲区满或空闲超时后自动发送。最后提供了简单的客户端和服务端通信代码示例,展示了TCP套接字编程

2025-08-03 20:52:46 1038

原创 Socket编程——UDP协议的群聊服务器

本文提出了一种基于UDP协议的轻量化实时群聊服务器设计方案。通过模块化解耦思想,将系统划分为通信层与业务处理层。方案采用分层架构设计,核心类UdpServer封装了socket通信细节,包含初始化网络文件、绑定端口、消息收发等基础功能。服务器通过recvfrom接收客户端消息,并采用回调机制实现数据处理与群发逻辑。相比TCP协议,UDP的无状态特性简化了通信层设计,避免了粘包/拆包等复杂问题,但需开发者自行处理消息可靠性。文章详细阐述了socket API使用、sockaddr_in结构封装等关键技术实现,

2025-07-30 20:20:55 621

原创 初识网络——协议,OSI模型,MAC,IP,Socket编程

本文概述了计算机网络的发展历程和关键协议原理。首先介绍了从局域网(LAN)到广域网(WAN)的技术演进,反映了人类协作突破空间限制的过程。然后重点讲解了协议的本质和分层结构,包括OSI七层模型和实际应用的TCP/IP五层模型,强调协议本质是标准化的结构体。在网络传输流程部分,详细解释了MAC地址、IP地址的区别与联系,通过唐僧取经的类比生动说明了IP负责全局路由、MAC负责局部传输的协作机制。文章最后指出,网络通信本质上是协议栈之间的交互,这种分层设计实现了模块化与解耦,使得不同系统能够互联互通。

2025-07-29 20:45:18 1031

原创 Linux——线程池的模拟实现

线程池技术是一种高效管理多线程任务的机制,通过预先创建一组线程并复用它们来执行短期任务,避免了频繁创建和销毁线程的开销。线程池适用于高并发场景(如Web服务器),能提高系统响应速度并防止资源耗尽。文章介绍了线程池的优势、适用场景,并提供了C++实现的线程封装类(Thread)和线程池模板类(ThreadPool),包含线程创建、任务队列管理、线程唤醒等功能。线程池通过控制线程数量(通常不超过CPU核心数)来平衡并行效率与系统稳定性,特别适合处理大量短时任务的场景。

2025-07-28 20:14:09 786

原创 Linux——死锁问题

本文介绍了死锁的概念、必要条件及预防和避免方法。死锁是指多个进程因互相申请被占用的资源而永久等待的状态,单线程也可能因代码错误、递归或信号处理导致死锁。死锁的四个必要条件包括互斥、请求与保持、不剥夺和循环等待。预防死锁可通过破坏任一条件实现,如减少共享资源、保证锁申请顺序一致或使用超时机制。死锁避免则通过动态检测资源分配安全性,银行家算法是最经典的避免算法之一,确保系统在安全状态下运行。

2025-07-28 15:54:14 753

原创 Linux——生产者消费者模型

摘要:生产者消费者模型解析 生产者消费者模型是一种经典的并发编程模型,通过引入缓冲区(超市)实现生产者和消费者的解耦。该模型提高了效率,支持忙闲不均,并通过互斥和同步机制保证线程安全。模型包含三种关系:生产者之间互斥、消费者之间互斥、生产者和消费者之间互斥+同步。文中实现了一个基于阻塞队列的版本,详细介绍了队列满/空时的阻塞机制、条件变量的使用以及伪唤醒问题的解决方法(使用while而非if判断)。最后给出了阻塞队列类的核心代码实现,包括入队、出队操作和线程同步机制。

2025-07-27 21:47:51 1064

原创 Linux——线程同步

本文介绍了多线程编程中同步与条件变量的核心概念及应用。首先通过抢票示例说明单纯互斥锁可能导致的线程饥饿问题,引入同步机制作为解决方案。同步在保证共享资源安全的基础上,通过条件变量实现线程执行顺序的合理调度。 条件变量包含等待队列和提示功能,关键接口包括初始化、销毁、等待(pthread_cond_wait)、单线程唤醒(pthread_cond_signal)和广播唤醒(pthread_cond_broadcast)。使用要点强调:1)线程必须在临界区内通过锁保护进入等待;2)可通过条件变量控制线程执行顺序

2025-07-26 22:07:34 916

原创 Linux——线程互斥

该文章摘要了多线程编程中的关键概念,包括共享资源、临界资源、临界区、互斥、原子性等。重点阐述了多线程不加锁保护共享资源会导致的数据不一致问题,并通过抢票程序实例演示了线程竞争导致票数变为负数的过程。文章详细解释了原子操作与互斥锁的区别,介绍了Linux中的互斥锁机制及其相关API函数(初始化、销毁、加锁等),并区分了全局锁和局部锁的使用场景。最后强调了保护共享资源的本质是对临界区代码进行保护,通过加锁确保任何时候最多只有一个线程能执行临界区代码。

2025-07-26 20:21:32 719

原创 Linux——线程(下)

摘要 本文详细介绍了Linux线程的相关概念和操作。线程共享进程的地址空间,包括栈区,并能瓜分进程的时间片资源。重点讲解了线程创建(pthread_create)、获取线程ID(pthread_self)、线程等待(pthread_join)、线程终止(pthread_exit/cancel)和线程分离(pthread_detach)等核心操作函数。深入分析了线程ID的本质是线程库维护的TCB结构体地址,而非内核LWP。线程库在进程共享区维护TCB结构,实现了对线程的用户级管理,与内核LWP解耦。通过系统调

2025-07-25 17:25:27 1017

原创 Linux——线程(上)

Linux线程实现与调度机制解析 摘要:本文深入剖析Linux系统中线程的实现原理与调度机制。Linux采用进程模拟线程(LWP),通过共享地址空间的task_struct实现线程管理,使线程成为CPU调度的基本单位。线程通过瓜分进程资源(代码/数据)实现轻量级执行流,共享进程结构体(mm_struct、页表等)。相比进程,线程具有创建/切换成本低、资源占用少等优势,特别适合并行计算和IO密集型任务。调度器直接以线程为单位进行调度,通过CPU亲和性优化降低切换开销。文章还分析了多线程编程的潜在问题,包括性能

2025-07-25 15:06:01 823

原创 Linux——信号

本文介绍了Linux系统中的信号机制,包括信号的基本概念、产生方式、保存方式以及处理方式。信号是一种异步事件通知机制,进程可以通过默认处理、自定义处理或忽略来处理信号。信号的产生方式包括键盘输入、系统调用、指令、硬件异常和软件条件。信号在进程中被保存在block(阻塞状态)、pending(未决状态)和handler(处理方法)三张表中。文章还详细讲解了信号集操作函数和信号屏蔽字的设置方法,并通过代码示例演示了信号的捕获、阻塞和pending表的查看。

2025-07-24 14:18:02 1059

原创 Linux——中断

本文深入探讨了计算机系统中的中断机制及其工作原理。文章首先通过程序阻塞问题引出硬件中断的概念,详细描述了外设通过中断控制器通知CPU的完整流程;随后介绍了时钟中断作为操作系统进行进程调度的基础机制;在软中断部分,解析了系统调用如何通过软中断实现,包括系统调用号的传递和处理过程;最后阐述了用户态与内核态的权限机制,说明操作系统如何通过权限控制保护内核安全。全文系统性地揭示了操作系统基于中断机制运行的本质,涵盖了硬件中断、时钟中断、软中断等关键概念,以及它们与系统调用、进程调度、权限管理的紧密联系。

2025-07-24 10:57:02 955

原创 Linux——System V 共享内存 IPC

共享内存通信原理与实现 共享内存是最高效的IPC通信方式,通过将物理内存映射到多个进程地址空间实现数据共享。其核心步骤包括: 创建共享内存:使用shmget函数,通过key标识内存段,设置权限和大小 内存映射:通过shmat将共享内存附加到进程地址空间 通信操作:进程可直接读写共享内存区域 资源释放:使用shmdt解除映射,shmctl或命令行删除共享内存 特点: 通信速度快(不经过内核) 双向通信能力 需要手动管理同步问题 生命周期与内核相同,需显式释放 关键参数: key:系统级标识(通常由ftok生成

2025-07-23 22:00:01 709

原创 Linux——命名管道

文章摘要: 本文介绍了命名管道的概念、创建与使用方法,并与匿名管道进行了比较。命名管道(FIFO)允许不相关进程间通信,通过mkfifo命令或函数创建,以文件形式存在,通过open、read、write操作实现数据交换。匿名管道仅限父子进程通信,而命名管道适用范围更广。两者均具有同步、字节流、单向通信和随进程销毁的特性,并遵循四种通信场景(读写速度差异及关闭行为)。文中提供了C++代码示例,演示了命名管道的读写端实现,并强调了实际开发中需添加函数调用成功判断。最后指出管道本质是内核缓冲区,删除文件不影响已打

2025-07-23 20:11:04 695

原创 Linux——进程间通信,匿名管道,进程池

本文主要探讨了进程间通信(IPC)的原理与实现,重点介绍了匿名管道及其特性。文章首先阐述了进程间通信的必要性,指出其是实现进程协作、数据共享和系统控制的关键机制。然后详细讲解了匿名管道的工作原理、使用方法和五种重要特性:血缘关系限制、自带同步机制、面向字节流、单向通信和生命周期绑定进程。通过代码示例展示了管道创建和父子进程通信的具体实现。文章最后介绍了进程池的概念和实现方法,包括管道管理、任务派发策略等,为构建高效进程通信系统提供了实用方案。

2025-07-22 21:02:40 1208

原创 Linux——动静态库的制作与使用

本文介绍了静态库和动态库的制作与使用方法。静态库在编译时链接到可执行文件中,而动态库在运行时加载。制作静态库使用ar指令,动态库使用gcc的-shared选项。文章详细说明了库的命名规范、打包方法以及四种动态库路径配置方案。静态库可通过-I、-L、-l选项指定路径使用,也可放入系统默认路径;动态库则需要额外配置运行时路径,包括拷贝到系统库目录、建立软链接、修改环境变量或更新ldconfig配置等方法。

2025-07-22 17:40:58 1040

原创 Linux——文件结构,重定向,缓冲区

Linux文件系统与操作摘要 本文介绍了Linux文件系统的核心概念和文件操作机制。主要内容包括: 文件理解:Linux系统采用"一切皆文件"的设计理念,将硬件设备抽象为文件统一管理。文件包含内容和属性两部分,即使空文件也占用磁盘空间。 文件操作:系统默认打开三个标准流(stdin/stdout/stderr)。文件操作核心接口包括: open():打开/创建文件,使用位图标记控制打开方式 write()/read():文件读写操作 文件描述符:实质是进程文件表数组的下标,通过该机制定位

2025-07-21 20:02:25 681

原创 Linux——自制shell命令行解释器

本文介绍了一个简单的shell实现框架,主要包括命令提示符显示、用户输入获取、命令行解析、环境变量初始化、进程创建与替换等核心功能。通过混合使用C/C++编写,实现了基本的shell交互功能,包括获取用户名、主机名和当前路径,处理内建命令如cd等。文章详细说明了如何通过fork创建子进程执行命令,并使用waitpid等待子进程完成。最后还提及了环境变量的初始化和更新机制,为后续扩展更复杂的shell功能奠定了基础。

2025-07-21 18:06:26 773 1

原创 Linux——虚拟地址空间与物理内存

本文探讨了Linux系统中的虚拟内存机制。通过fork()函数创建子进程的示例,展示了父子进程共享代码但拥有独立数据空间的现象,解释了虚拟地址与物理地址的映射关系。文章详细介绍了虚拟内存的概念,包括页表的作用、mm_struct结构体对虚拟内存的管理方式,以及虚拟内存区域的组织形式(单链表和红黑树)。同时分析了虚拟内存的优势:使地址有序化、保护物理内存、实现解耦合,并延伸说明了缺页中断和挂起操作的原理。最后,通过mm_struct源码展示了虚拟内存的区域划分方式,包括代码段、数据段等各部分的地址管理。

2025-07-20 21:31:20 841 1

原创 Linux——进程的退出、等待与替换

进程退出:介绍三种退出场景(正常/错误/异常),分析_exit和exit函数的区别(后者会刷新缓冲区),并通过测试验证差异。进程等待:阐述父进程等待子进程的必要性(避免僵尸进程和内存泄漏),对比wait/waitpid函数的使用,详解status参数如何通过位图存储退出码和信号,并区分阻塞与非阻塞等待(WNOHANG选项)。进程替换:解析exec函数族原理(覆盖原进程代码但不创建新进程),列举6种替换函数(如execl、execvp等),说明其命名规则和参数差异(路径、参数传递方式、环境变量处理),强调

2025-07-20 18:22:46 751

原创 Linux操作系统——进程认识

进程是操作系统中的基本执行单元,由内核数据结构(PCB)和程序代码及数据组成。进程创建时先建立PCB再加载代码,退出时先释放代码再处理PCB。操作系统通过task_struct结构体描述进程,并以组织化方式管理进程列表。

2025-07-20 17:06:43 818

原创 理解操作系统

本文介绍了冯诺依曼体系结构和操作系统的基本概念。冯诺依曼体系结构将计算机硬件分为输入设备、输出设备、存储器和中央处理器(CPU),其中存储器作为数据中转站提升系统效率。操作系统作为软硬件管理者,通过"先描述,再组织"的方式实现对底层硬件的间接管理,其核心是系统调用和库调用。系统调用是操作系统提供的安全访问接口,库调用则在此基础上封装简化常用操作,两者共同构建了用户与硬件之间的安全桥梁,既提供服务又保护系统安全。

2025-07-20 10:34:32 505

原创 Linux开发工具——make/Makefile

Makefile是一种自动化构建工具,通过定义依赖关系和依赖方法实现项目的高效编译。它解决了多源文件管理的复杂性,只需执行make命令即可自动完成编译流程。Makefile支持变量定义、伪目标(如.PHONY修饰的clean命令)和特殊符号(如$@、$^),还能通过文件时间戳判断是否需要重新编译。其执行逻辑采用类似栈的结构处理文件依赖,优化编译效率。通过stat命令可查看文件修改时间,确保仅对变更内容重新编译,显著提升开发效率。

2025-07-19 22:49:35 608

原创 Linux的用户和权限

本文介绍了Linux系统中的用户管理和权限控制相关内容。主要包括: Linux用户分为root超级管理员和普通用户,普通用户可通过sudo提权但需在/etc/sudoers白名单中配置。 用户切换命令su及用户管理命令adduser/passwd/userdel。 文件权限的组成:用户类型(拥有者/所属组/其他)和权限类型(读/写/执行),通过ls -l可查看。 权限修改命令chmod(权限)、chown(拥有者)、chgrp(所属组)。 umask掩码影响新建文件/目录的默认权限,计算方法为初始权限&am

2025-07-19 21:51:12 967

原创 Linux基本指令

Linux常用命令摘要 本文介绍了Linux系统中常用的基础命令,包括文件操作和目录管理相关指令。主要内容包括: 文件查看命令:ls(显示目录内容)、pwd(显示当前路径)、cd(切换目录)、tree(树状显示目录结构) 文件操作命令: touch(创建文件) mkdir(创建目录) rmdir/rm(删除目录/文件) cp(复制文件或目录) mv(移动/重命名文件或目录) 文件内容查看命令:cat/tac(正/逆序显示)、more/less(分页查看)、head/tail(查看文件头/尾) 其他实用命令:

2025-07-19 21:05:28 895

原创 MySQL数据库与表结构操作

本文介绍了MySQL数据库和表的基本操作命令。主要内容包括:1)库的创建、删除、备份与恢复,可指定字符集和校验集;2)查看库信息、修改库结构;3)表的创建、删除操作,支持字段类型定义和存储引擎选择;4)表结构的查看、修改方法,包括重命名、增删改列等操作;5)数据备份与恢复命令示例。文中还解释了字符集与校验集的概念区别,并提供了常用命令的语法格式和注意事项,如创建库时database为单数等细节。这些基础操作命令是管理MySQL数据库的必要技能。

2025-07-18 23:13:36 754

原创 MySQL数据库基础

本文介绍了MySQL数据库的基础操作和核心概念。主要内容包括:1) MySQL登录指令及参数说明,免密码配置方法;2) 数据库的本质理解,对比文件存储的优势,主流数据库介绍;3) 通过实例演示库和表的创建,揭示库是目录、表是文件的本质;4) MySQL的三层架构解析;5) SQL语句的DDL、DML、DCL分类。文章以Linux环境为例,通过具体命令操作展示了MySQL的基本使用流程,帮助读者建立对数据库系统的初步认识。

2025-07-18 18:02:28 1069

原创 C++——类型转换

C++中的类型转换主要包括内置类型之间、内置与自定义类型之间以及自定义类型之间的转换。内置类型转换与C语言相同,自定义类型转换通过构造函数实现,可使用explicit阻止隐式转换。类型转换运算符operator T()可实现自定义类型到内置类型的转换。标准类型转换包括:static_cast(对应隐式转换)、reinterpret_cast(强制转换)、const_cast(去除const属性)和dynamic_cast(安全向下转型,要求父类有虚函数)。dynamic_cast在父类指针转子类指针时能检查

2025-07-18 14:01:48 1136

原创 C++11新特性(下)——智能指针原理、使用和实现

智能指针是一种自动化管理资源的类模板,主要用于解决内存泄漏等问题。常见的智能指针类型包括auto_ptr(已弃用)、unique_ptr(独占所有权)和shared_ptr(引用计数)。其中shared_ptr通过引用计数机制实现多对象共享资源,但存在循环引用问题,可通过weak_ptr辅助解决。智能指针的实现涉及构造函数、拷贝构造、赋值重载等,并可通过定制删除器灵活处理不同资源的释放。总体而言,智能指针能有效管理资源生命周期,避免手动释放带来的隐患,是C++中重要的内存管理工具。

2025-07-18 10:29:15 891

原创 C++——异常

异常的理解

2025-07-17 22:39:36 604

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除