模板元编程
模板元编程是C++编译期计算的核心技术,通过模板特化与递归实例化实现零成本抽象。它让类型判断、数值计算在编译阶段完成,既保证类型安全又消除运行时开销,是高性能库与泛型编程的基石。
模板折叠与SFINAE模板替换
在现代C++泛型编程中,模板折叠简化了参数包处理,SFINAE提供编译期类型约束。二者结合能写出类型安全、零开销的泛型代码,是高效编程的重要基础。
线程池
线程池通过复用固定数量线程处理并发任务,降低了频繁创建销毁的资源消耗,支持任务排队和规模管控,提升系统稳定性与响应效率。
lambda表达式基础
Lambda表达式是C++11引入的匿名函数特性,通过捕获列表控制外部变量访问,支持值捕获和引用捕获,能简化代码编写并提升可读性。
thread
本文系统梳理C++11标准线程库thread的相关概念、实现方法、底层逻辑与注意事项,覆盖多线程基础与进阶内容,适配开发与学习需求。
weak_ptr
代码仓库shanchuann/CPP-Learninng weak_ptr 是 C++11 标准中专为配合 shared_ptr 设计的弱引用智能指针,不属于独立的资源管理指针,不具备普通指针的解引用、成员访问能力,核心定位是共享资源的生命周期观测者,而非所有者。其设计的核心目的,就是破解 shared_ptr 的循环引用难题,同时规避共享场景下的悬空指针非法访问风险,填补 shared_ptr 共享机制的安全漏洞,是现代 C++智能指针体系中不可或缺的配套组件。 底层核心特性 不占用强引用计数: weak_ptr 绑定 shared_ptr 后,仅递增控制块内的弱引用计数,绝对不影响 shared_ptr 的强引用计数,不会延长托管对象的生命周期,这是破解循环引用的核心原理; 无资源所有权: weak_ptr 不负责对象的创建与释放,既不会接管资源,也不会触发析构释放,全程仅观测对象生命周期,不干预 shared_ptr 的资源管控逻辑; 依赖 shared_ptr 初始化: weak_ptr 无法直接通过 new 或裸指针初始化,只能通过已有的 shared_p...
shared_ptr
C++11共享所有权智能指针,基于引用计数自动管理内存,彻底解决内存泄漏与悬空指针问题,是STL容器的标准首选。
unique_ptr
unique_ptr是C++11提供的独占所有权智能指针,通过移动语义安全转移资源,禁止拷贝保障唯一性,可管理动态数组或自定义资源,是现代C++内存管理核心工具。
auto_ptr
基础理论内存泄漏内存泄漏是 C++程序中动态分配的堆内存,因程序逻辑疏漏未释放或无法释放,导致堆内存持续占用、无法复用的异常现象,长期累积会引发程序运行效率降低、系统资源耗尽乃至程序崩溃等严重后果,是 C++内存管理的主要痛点。依据泄漏资源的类型,可将其划分为两类,二者均会对系统稳定性造成不可逆影响。 第一类为堆内存泄漏,也是工程中最常见的泄漏类型,指程序在堆空间申请内存资源后,使用完毕未执行释放操作,导致该块内存被系统标记为占用状态,后续无法被当前程序或其他程序复用,是狭义层面常说的内存泄漏。第二类为资源泄漏,针对操作系统有限的非内存类资源,包括网络套接字、文件描述符、互斥锁、句柄等,这类资源属于系统全局稀缺资源,若创建后未正常归还系统,持续累积会直接耗尽系统资源池,导致后续程序无法申请对应资源,引发系统级功能异常。 裸指针的固有缺陷C++原生裸指针不具备内存自动管理能力,使用过程中存在六大难以规避的底层缺陷,也是智能指针得以提出的重要动因,各类缺陷均会直接引发内存异常或程序未定义行为:其一,无法自主区分指针指向单个对象还是对象数组,易造成内存释放方式选择失误;其二,无法判断指...
容器适配器
容器适配器是STL中基于底层容器的接口封装,不独立存储。它通过封装deque等容器,实现了栈、队列和优先队列,屏蔽底层细节,提供便捷操作。





