alloc 族函数有哪些

Tags
C语言
ID
53
 
在C语言的标准库中,除了malloc函数,还有一组相关的动态内存分配函数,通常被称为"alloc"族函数。这些函数包括malloc、calloc、realloc和free。
  1. malloc:malloc函数用于分配指定大小的内存块,并返回一个指向该内存块的指针。它接受一个参数,表示要分配的内存块的大小(以字节为单位)。malloc函数分配的内存块中的内容是未初始化的,它返回的指针指向分配的内存块的起始位置。
  1. calloc:calloc函数用于分配指定数量和大小的连续内存块,并返回一个指向该内存块的指针。它接受两个参数,分别表示要分配的内存块的数量和每个内存块的大小(以字节为单位)。calloc函数分配的内存块中的内容会被初始化为0。
  1. realloc:realloc函数用于重新分配已经分配的内存块的大小。它接受两个参数,第一个参数是一个指针,指向已经分配的内存块的起始位置;第二个参数是要重新分配的内存块的大小(以字节为单位)。realloc函数可能会将原来的内存块扩展或缩小,并返回一个指向重新分配后的内存块的指针。如果无法重新分配内存块,则realloc函数可能会返回一个新的内存块,并且原来的内存块会被释放。
  1. free:free函数用于释放之前通过malloc、calloc或realloc函数分配的内存块。它接受一个参数,即要释放的内存块的起始位置的指针。调用free函数后,该内存块将会被标记为可用,可以被后续的内存分配函数重新使用。
这些alloc族函数在功能上有所区别:
  • malloc和calloc函数用于分配内存块,malloc分配的内存块内容未初始化,而calloc分配的内存块内容初始化为0。
  • realloc函数用于重新分配已经分配的内存块的大小,可以扩展或缩小内存块。
  • free函数用于释放之前分配的内存块,将该内存块标记为可用。
使用这些函数可以进行动态内存管理,根据需要分配、重新分配和释放内存块。