成员变量
private:
char* data;
size_t length;
size_t capacity; // 用于优化内存管理,避免频繁的 realloc
2025年3月28日大约 1 分钟
成员变量
private:
char* data;
size_t length;
size_t capacity; // 用于优化内存管理,避免频繁的 realloc
基于内存池的自定义堆内存管理器,主要用于优化小对象的内存分配与释放。 其核心思想是预分配一块连续内存,并使用空闲链表进行管理,从而减少动态内存分配的开销。
- 内存池 (
memory_pool
): 预先分配固定大小的内存块,提高分配效率。
- 空闲链表 (
free_list
): 维护已释放的块,供后续复用,避免频繁调用 malloc/free。
vector是一个动态数组会自动分配和管理内部的内存,使其能够动态地存储元素,具有快速的随机访问能力(O(1)时间复杂度)
当你创建一个空的vector或通过指定初始大小时,vector会分配一块内存来存储元素。这个初始内存通常比容器实际需要的要大,以容纳未来添加的元素。STL库会自动决定初始内存大小。
vector的内存分配策略通常是指数增长的,也就是说,当vector的容量不足以存储新元素时,它会分配一块更大的内存,通常是原内存的两倍。这种策略可以减少频繁的内存分配和复制操作,提高性能。 当vector的内存不足以容纳新元素时,它会分配新的内存,将现有元素从旧内存复制到新内存中,然后释放旧内存。这个过程可能导致元素的重新分配,因此要谨慎处理大型vector的插入操作,因为它们可能会导致性能开销。