随笔分类 -  编程语言 / C++学习随笔

C++ map 和unordered_map 的区别
摘要:C++中的map和unordered_map是两种常用的关联容器, 主要区别如下: 1. ‌底层实现‌ ‌ map‌:基于红黑树(自平衡二叉搜索树)实现,元素按键值自动排序 。 ‌ unordered_map‌:基于哈希表实现,元素存储顺序与插入顺序无关,通过哈希函数快速定位。 2. ‌性能特点‌ 阅读全文
posted @ 2025-09-26 10:48 小樊童鞋 阅读(19) 评论(0) 推荐(0)
new 为数组开辟内容空间的时候,数组大小这个额外的信息是如何存储的? int * p = new int[5]; 指针p 指向的的int 数据地址还是数组大小的地址?
摘要:new 为数组开辟内容空间的时候,数组大小这个额外的信息是如何存储的? 在C++中,使用new int[5]动态分配数组时,数组大小的存储方式和指针指向的地址如下: 1. ‌数组大小的存储机制‌ 编译器会在分配的内存块头部额外存储数组长度等元信息(通常位于实际数组元素内存之前),这部分对程序员透明。 阅读全文
posted @ 2025-09-25 14:11 小樊童鞋 阅读(5) 评论(0) 推荐(0)
系统调用brk 和 mmap 有什么不同?
摘要:系统调用brk 和 mmap 有什么不同 1. 核心功能差异 ‌brk‌: 通过调整进程堆顶指针(_edata)扩展/收缩堆空间,仅适用于连续内存分配‌。 ‌mmap‌:在进程虚拟地址空间中创建独立映射区域,支持文件/匿名内存映射,可分配非连续内存‌。 2. 内存管理机制 ‌brk‌: 分配时仅修改 阅读全文
posted @ 2025-09-25 13:57 小樊童鞋 阅读(9) 评论(0) 推荐(0)
C++ new 操作符在操作系统层执行了什么操作?
摘要:在C++中,new操作符的执行涉及操作系统层面的内存分配和对象构造过程,具体可分为以下几个关键步骤: 1. 调用内存分配函数(operator new) new操作符首先通过operator new函数向操作系统申请内存。该函数底层通常调用malloc或类似的系统调用(如brk/mmap),从堆空间 阅读全文
posted @ 2025-09-25 13:39 小樊童鞋 阅读(10) 评论(0) 推荐(0)