C++ 八股掘金录
文章平均质量分 91
Asher_qq
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
内存管理 - 从虚拟到物理
本文深入探讨操作系统的内存管理机制,重点分析了虚拟内存的核心价值、分页管理原理及缺页中断处理流程。文章首先阐述了虚拟内存的必要性,指出其解决了安全隔离和地址空间确定性问题。随后详细介绍了分页管理的地址转换过程,包括TLB查找、多级页表查询以及缺页中断处理机制。文中还对比了分段、分页和段页式管理的优缺点,并分析了内部碎片与外部碎片的区别。最后,文章概述了常见的页面置换算法及其特点。这些内容为理解现代操作系统内存管理机制和进行系统优化提供了理论基础。原创 2025-09-01 23:45:59 · 1011 阅读 · 0 评论 -
进程与线程 - 并发的基石
进程与线程:并发的核心机制 进程和线程是现代操作系统的核心抽象。进程作为资源隔离单位,提供独立地址空间和系统资源;线程作为执行调度单位,实现轻量级并发。进程切换开销大(需切换页表、清TLB),而线程切换仅需保存寄存器状态,效率更高。进程间通信(IPC)需通过管道、共享内存等机制,存在性能瓶颈;线程间可直接访问共享内存,但需同步控制。理解二者的区别及上下文切换原理,是掌握系统级编程的关键。从隔离性看进程,从并发性看线程,二者共同构建了现代计算的基础架构。原创 2025-09-01 12:14:28 · 885 阅读 · 0 评论 -
特别篇:C++ 程序是如何“炼成”的
这篇技术文章深入解析了C++程序编译链接过程中静态库与动态库的核心区别。文章从软件工程复用的本质出发,阐释了两种库形式的诞生背景:静态库追求独立自足,在编译时拷贝代码;动态库注重灵活共享,在运行时加载。通过详尽的对比表格,文章从链接时间、文件大小、内存占用、更新部署等维度系统比较了两者特性。特别深入剖析了动态链接的底层机制,包括PIC地址无关代码、GOT/PLT表的延迟绑定原理。最后通过插件系统设计场景题,检验读者对技术选型的理解。全文兼顾理论深度与实践指导,适合中高级开发者阅读。原创 2025-08-28 15:23:46 · 580 阅读 · 0 评论 -
C++ 并发编程中的锁:总结与实践
本文介绍了C++并发编程中常用的锁机制,包括互斥锁(std::mutex)、灵活的锁(std::unique_lock)和读写锁(std::shared_mutex)。互斥锁通过std::lock_guard实现简单保护,unique_lock提供延迟加锁等高级功能,而shared_mutex支持读写分离提升性能。文中通过代码示例展示了这些锁的使用场景和方法,特别是如何利用std::lock避免死锁,以及读写锁在读多写少场景下的优势。这些锁机制是C++并发编程中保护共享数据的关键工具。原创 2025-08-26 20:38:32 · 571 阅读 · 0 评论 -
C++ STL 顶层设计与安全:迭代器、失效与线程安全
摘要: C++ STL的核心设计围绕迭代器、失效机制和线程安全展开。迭代器作为泛化指针,通过五种类型(输入/输出/前向/双向/随机访问)实现算法与容器的解耦。迭代器失效是重要概念,不同容器(连续/链式/哈希/红黑树)的失效规则各异,正确处理失效是编写健壮代码的关键。线程安全方面,STL遵循"零开销"原则,默认不保证线程安全,将同步责任交给开发者。这些机制共同体现了C++对性能、灵活性和安全性的平衡考量。原创 2025-08-26 20:27:25 · 460 阅读 · 0 评论 -
C++ STL 专家容器:关联式、哈希与适配器
C++ STL专家容器深度解析:红黑树与哈希表 摘要:本文深入剖析C++ STL中的关联式容器(map/set)和哈希容器(unordered_map/unordered_set)的核心实现原理。重点讲解红黑树的五大平衡性质、插入删除时的平衡维护策略(颜色翻转和树旋转),以及其与AVL树的性能对比。同时揭示哈希表的冲突解决机制,分析不同容器在查找效率上的差异。文章还探讨了priority_queue作为容器适配器的堆实现原理,帮助开发者根据场景选择合适容器,理解底层数据结构对性能的关键影响。(148字)原创 2025-08-26 19:42:15 · 664 阅读 · 0 评论 -
C++ 类型转换深度解析
本文解析 C++ 四种类型转换的设计目的与特性。C++ 用它们替代 C 风格转换,解决其意图模糊和安全性问题,强制明确转换意图并增强检查。原创 2025-08-25 21:03:06 · 652 阅读 · 0 评论 -
C++ 字符串与内存操作函数深度解析
本文深度解析C++字符串与内存操作函数,比较C语言传统函数(strcpy、memcpy、sprintf)与C++现代化替代方案的优劣。 核心要点: C函数设计哲学强调性能与灵活性,但缺乏安全性检查,易导致缓冲区溢出等漏洞 C++现代化替代方案: std::string替代strcpy,提供自动内存管理和丰富接口 std::copy/std::vector替代memcpy,保证类型安全 std::stringstream/std::format替代sprintf,实现类型安全格式化 底层原理分析包括缓冲区溢出原创 2025-08-25 20:55:55 · 803 阅读 · 0 评论 -
C++ extern 关键字面试深度解析
摘要:C++中extern关键字主要用于处理程序跨文件共享和语言兼容性问题。它作为声明关键字,允许在一个编译单元中使用其他编译单元定义的全局变量和函数,实现分离式编译。extern "C"则用于解决C++与C混合编程时的链接兼容性问题,通过抑制C++的名称修饰功能,使两者能正确链接。在实际项目中,extern常用于头文件声明全局变量/函数,而extern "C"则用于处理跨语言接口调用,通常配合__cplusplus宏来编写兼容C/C++的头文件。原创 2025-08-25 20:48:26 · 948 阅读 · 0 评论 -
C++ new/delete vs malloc/free深度解析
本文深入解析C++中new/delete与malloc/free的核心区别,强调new创建的是对象(调用构造函数),而malloc仅分配内存。关键对比包括类型安全、错误处理、数组处理等特性,指出new/delete是C++面向对象的基石。最佳实践建议在C++中完全避免malloc/free,仅在与C库交互时使用。文章还模拟了面试问答场景,解释混用风险及new重载的应用场景,最后用简答题总结核心要点:构造/析构函数调用、数组处理差异以及与C库交互的合理用途。原创 2025-08-25 20:47:12 · 1022 阅读 · 0 评论 -
C++ 内存安全与智能指针深度解析
现代C++通过智能指针实现内存安全,核心是RAII机制将资源生命周期与对象绑定。默认使用std::unique_ptr实现独占所有权,需要共享时采用std::shared_ptr配合引用计数,循环引用问题通过std::weak_ptr解决。创建时应优先使用make_unique和make_shared,既能保证异常安全又提升性能。智能指针从设计上消除了手动内存管理的风险,是现代C++内存管理的最佳实践。原创 2025-08-25 16:50:34 · 1112 阅读 · 0 评论 -
C++ 指针与引用面试深度解析
C++指针与引用面试解析摘要 指针和引用是C++中实现间接访问的两种机制,各有特点和适用场景。指针存储对象地址,支持空值和重定向,但存在安全隐患;引用是对象别名,必须初始化且不可为空,更安全但限制更多。最佳实践中,优先使用引用处理函数参数和返回值,指针则用于可选对象或需改变指向的情况。关键区别在于指针暴露底层地址概念,引用提供高级抽象。返回引用时需确保目标对象生命周期长于引用,避免悬垂引用。原创 2025-08-25 16:44:06 · 1215 阅读 · 0 评论 -
C++ static 关键字面试深度解析
摘要:C++ static 关键字面试深度解析 static 关键字在 C++ 中控制变量/函数的生命周期和可见性,有三大应用场景: 函数内静态局部变量:延长生命周期至程序结束,用于计数器或单例模式 全局静态变量/函数:限制为内部链接,仅在当前文件可见(现代C++建议用匿名命名空间替代) 类静态成员:属于类而非对象,所有实例共享。静态函数无this指针,不能访问非静态成员 关键区别:普通全局变量具有外部链接,而静态全局变量只有内部链接。匿名命名空间比static更优,因其能封装类型(class/struct原创 2025-08-25 16:42:42 · 770 阅读 · 0 评论 -
C++ const 关键字解析
本文深入解析C++中const关键字的核心价值与应用场景。const作为"不变性"契约,既保证编译期安全性,又增强代码可读性,还能优化性能。重点剖析const修饰指针的三种情况:常量指针(不能修改指向值)、指针常量(不能修改指向地址)和指向常量的常指针(两者皆不可修改)。此外还探讨const在函数参数、返回值、成员函数中的使用,以及与#define、constexpr、mutable等关键字的对比。文章最后通过模拟面试问答,展示如何在实际对话中清晰表达const的理解和应用。原创 2025-08-25 16:40:47 · 1069 阅读 · 0 评论 -
C++ 对象生命周期核心函数深度解析
C++对象生命周期管理核心机制解析 本文深入剖析C++对象生命周期管理的六大核心特殊成员函数(默认构造、拷贝构造、拷贝赋值、移动构造、移动赋值和析构函数)。从"三法则"到"五法则"的演进路径揭示C++资源管理哲学的发展,重点分析了编译器自动生成规则及其底层原理。通过实际项目案例对比传统C风格资源管理与现代RAII实现方式,展示如何利用这些机制构建安全高效的系统。文章特别强调移动语义的性能优势及其在大型数据传输场景中的关键作用,为C++开发人员提供全面的对象生命周期管理原创 2025-08-25 11:43:37 · 1556 阅读 · 0 评论
分享