C Language内存管理


介绍

为了管理动态分配的内存,标准C库提供了函数malloc()calloc()realloc()free() 。在C99及更高版本中,还有aligned_alloc() 。有些系统还提供alloca()

句法

  • void * aligned_alloc(size_t alignment,size_t size); / *仅限C11 * /
  • void * calloc(size_t nelements,size_t size);
  • void free(void * ptr);
  • void * malloc(size_t size);
  • void * realloc(void * ptr,size_t size);
  • void * alloca(size_t size);来自alloca.h的/ *,不标准,不便携,危险。 * /

参数

名称描述
size( mallocreallocaligned_alloc内存的总大小(以字节为单位)。对于aligned_alloc ,大小必须是对齐的整数倍。
大小( calloc每个元素的大小
nelements 元素数量
PTR 指向以前由malloccallocreallocaligned_alloc返回的已分配内存的指针
对准分配内存的对齐方式

备注

C11

请注意, aligned_alloc()或更高版本仅定义了aligned_alloc()

诸如基于POSIX的系统提供了分配对齐存储器的其他方式(例如posix_memalign() ),并且还具有其他存储器管理选项(例如mmap() )。

内存管理 相关例子