首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
C++
沐怡旸
创建于2025-09-02
订阅专栏
讲解C++相关的知识点、趣事、历史等
暂无订阅
共12篇文章
创建于2025-09-02
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
【基础知识】仿函数与匿名函数对比
默认首选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