动态内存分配概念
动态内存分配器管理堆(heap)中的内存,在运行时向程序提供可变大小的内存块。堆位于未初始化数据段(BSS)之上,由 malloc/free 等函数管理。
两种分配器类型:
- 显式分配器:要求程序员显式释放已分配的块。C语言中的
malloc和free、C++中的new和delete都属于此类。程序员必须负责在适当时机释放内存,否则会导致内存泄漏。 - 隐式分配器(垃圾收集器):分配器自动检测并释放不再使用的已分配块。Java、Go、Python等高级语言使用这种机制。程序员无需手动管理内存释放。
malloc 的使用模式:
void *p = malloc(size); // 分配
free(p); // 释放(显式分配器)动态内存分配器需要在吞吐量和内存利用率之间做权衡,这也是后续讨论分配器设计和性能评价的核心。
链接到
- 上一个知识点:9.13 Linux内存系统
- 下一个知识点:9.15 分配器性能评价