首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
C++
沐怡旸
创建于2025-09-02
订阅专栏
讲解C++相关的知识点、趣事、历史等
等 1 人订阅
共16篇文章
创建于2025-09-02
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
【基础知识】C++的几种构造函数
构造函数是C++面向对象编程的基石,理解它们对于编写健壮、高效的代码至关重要。 什么是构造函数? 构造函数是一个特殊的成员函数,它在创建对象时自动调用,用于初始化对象的内存状态
【底层机制】std::weak_ptr解决的痛点?是什么?如何实现?如何正确用?
std::weak_ptr 不是一种独立的智能指针,而是 std::shared_ptr 生态系统的一个安全补充。它通过放弃所有权来换取避免循环引用的能力,并通过严格的“先检查后访问”机制保证了安全性
【底层机制】std::shared_ptr解决的痛点?是什么?如何实现?如何正确用?
std::shared_ptr 的核心价值在于:它通过自动化的引用计数技术,安全、高效地实现了资源的共享所有权模型,将开发者从手动管理共享资源生命周期的泥潭中彻底解放出来
【底层机制】std::unique_ptr 解决的痛点?是什么?如何实现?怎么正确使用?
std::unique_ptr 将动态分配资源的“所有权”概念首次在C++类型系统中清晰地表达了出来。你看到一个 unique_ptr,你就立刻知道谁拥有它、谁负责释放它
【基础知识】仿函数与匿名函数对比
默认首选Lambda表达式:对于90%需要函数对象的场景,尤其是在算法调用和回调中,使用Lambda。它更简洁、更安全(通过指定捕获避免意外)、更局部化
【底层机制】稀疏文件--是什么、为什么、好在哪、怎么实现的?
核心概念:稀疏文件是一种计算机文件存储技术,其中文件中的空数据块(通常是由一串零字节组成,称为“空洞”)不会实际分配物理磁盘空间。文件系统只是在元数据中记录这些空洞的位置和大小
【底层机制】std::unordered_map 扩容机制
auto 的实现完全发生在编译期。它不会产生任何运行时开销。其行为几乎完全等同于模板类型推导(Template Argument Deduction)。理解模板类型推导是理解 auto 的关键。
【底层机制】auto 关键字的底层实现机制
auto 是一个类型说明符。它在编译期指示编译器:“请根据这个变量的初始化表达式,自动推导出它的类型
【底层机制】右值引用是什么?为什么要引入右值引用?
它让C++程序员能够明确区分和处理“可安全拷贝的持久对象”和“可安全窃取其资源的临时对象”,从而编写出效率极高、资源管理清晰的现代C++代码
【底层机制】为什么栈的内存分配比堆快?
栈的内存分配更快,其本质是“分配”这个动作本身的成本极低,几乎可以忽略不计。而堆的分配是一个复杂、动态且需要全局协调的过程
【底层机制】Valgrind Memcheck 工作原理通俗解析
Memcheck 通过 全面插桩 来接管程序的所有内存操作,利用 影子内存 这本“总账”来跟踪每一字节内存的生命周期(分配/释放),利用 V-bits 这本“明细账”来跟踪每一个比特数据的合法性
【底层机制】C++ vector对象到底是在堆上还是栈上?
不要把容器对象和容器所管理的数据混为一谈。std::vector是一个聪明的管理者,它自身可以放在任何地方,但它总是为自己的员工(元素数据)在堆上(或通过分配器指定的地方)准备好办公室
【底层机制】为什么 delete 或 free 不需要指定释放的大小?
delete 和 free() 不需要我们指定大小,是因为内存分配器在分配内存时,已经暗中记录下了这块内存的大小等元信息(通常记录在分配的内存块之前或之后)
【底层机制】【C++】vector 为什么等到满了才扩容而不是提前扩容?
std::vector不提前扩容的根本原因是:为了恪守C++“零开销”的设计哲学,在默认情况下避免任何不必要的性能损耗和内存浪费,同时将优化控制的权力通过reserve()等接口完全交付给程序员
【底层机制】malloc 在实现时为什么要对大小内存采取不同策略?
malloc 在底层区分小内存和大内存分配,主要是为了在性能、内存利用率和碎片控制这几个关键目标上取得最佳平衡
【C++基础知识】深入剖析C和C++在内存分配上的区别
C和C++的风格差异:根本区别在于C++将内存分配与对象生命周期管理(构造/析构)紧密绑定,这是其面向对象特性的基石。 C++的演进:从C到C++,是从malloc/free 到 new/delete