notes:malloc、calloc和realloc均是动态内存分配函数
1. malloc
void* malloc(size_t size);
分配一块以字节为单位的指定大小的内存,内部未初始化。
int *p = (int*)malloc(10 * sizeof(int)); // 分配10个整数的内存空间。
2. calloc
void* calloc(size_t n, size_t size);
分配一块内存并将其初始化为0。它分配 n个元素,每个元素的大小为 size 字节。
int *p = (int*)calloc(10, sizeof(int)); // 分配10个整数的内存空间,初始值为0。
3. realloc
void* calloc(size_t n, size_t size);
重新分配内存块,可以扩展或缩小已分配的内存块的大小,新分配的部分内容是未初始化的,缩小内存时,多余部分将被丢弃。如果 ptr 为 NULL,则行为类似于 malloc。如果 size 为0且 ptr 不为 NULL,则行为类似于 free。
int *p = (int*)realloc(p, 20 * sizeof(int)); // 调整之前分配的内存块,
// 使其能容纳20个整数。