malloc – 申请动态内存空间
free – 释放动态内存空间
calloc – 申请并初始化一系列内存空间
realloc – 重新分配内存空间
malloc:
函数原型:
#include <stdlib.h>
...
void *malloc(size_t size);
参数size:指定每个内存块空间的大小,以字节为单位。
free:释放参数的空间。
函数原型:
#include <stdlib.h>
...
void free(void *ptr);
参数ptr:指向将要释放的内存空间的地址。
calloc 函数在内存中动态地申请 nmemb 个长度为 size 的连续内存空间(即申请的总空间尺寸为 nmemb * size),这些内存空间全部被初始化为 0。如果 nmemb 或 size 参数的值为 0,那么返回值会因标准库实现的不同而不同,可能是 NULL,也可能返回一个指针值,稍后可以传递给 free 函数。
函数原型:
#include <stdlib.h>
...
void *calloc(size_t nmemb, size_t size);
nmemb:指定需要分配的内存块个数。
size:指定每个内存块空间的大小,以字节为单位。
realloc:
-
realloc 函数修改 ptr 指向的内存空间大小为 size 字节。
-
如果新分配的内存空间比原来的大,则旧内存块的数据不会发生改变;如果新的内存空间大小小于旧的内存空间,可能会导致数据丢失,慎用!
-
该函数将移动内存空间的数据并返回新的指针。
-
如果 ptr 参数为 NULL,那么调用该函数就相当于调用 malloc(size)。
-
如果 size 参数为 0,并且 ptr 参数不为 NULL,那么调用该函数就相当于调用 free(ptr)。
-
除非 ptr 参数为 NULL,否则 ptr 的值必须由先前调用 malloc、calloc 或 realloc 函数返回。
函数原型:
#include <stdlib.h>
...
void *realloc(void *ptr, size_t size);
参数ptr:1. 指向由先前调用 malloc、calloc 或 realloc 函数返回的内存空间。
2. 如果该参数为 NULL,相当于调用 malloc(size) 函数。
参数size:指定每个内存块空间的大小,以字节为单位。