动态内存分配概念

动态内存分配器管理堆(heap)中的内存,在运行时向程序提供可变大小的内存块。堆位于未初始化数据段(BSS)之上,由 malloc/free 等函数管理。

两种分配器类型

  • 显式分配器:要求程序员显式释放已分配的块。C语言中的 mallocfree、C++中的 newdelete 都属于此类。程序员必须负责在适当时机释放内存,否则会导致内存泄漏。
  • 隐式分配器(垃圾收集器):分配器自动检测并释放不再使用的已分配块。Java、Go、Python等高级语言使用这种机制。程序员无需手动管理内存释放。

malloc 的使用模式:

void *p = malloc(size);    // 分配
free(p);                   // 释放(显式分配器)

动态内存分配器需要在吞吐量内存利用率之间做权衡,这也是后续讨论分配器设计和性能评价的核心。

链接到