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