1 malloc()
C 库函数 void *malloc(size_t size) 分配所需的内存空间,并返回一个指向它的指针。
例:char *str = (char *) malloc(15);
2 calloc()
C 库函数 void *calloc(size_t nitems, size_t size) 分配所需的内存空间,并返回一个指向它的指针。malloc 和 calloc 之间的不同点是,malloc 不会设置内存为零,而 calloc 会设置分配的内存为零。
int *a = (int*)calloc(n, sizeof(int));//n为元素的个数
3 realloc()
C 库函数 void *realloc(void *ptr, size_t size) 尝试重新调整之前调用 malloc 或 calloc 所分配的 ptr 所指向的内存块的大小。
参数:
- ptr -- 指针指向一个要重新分配内存的内存块,该内存块之前是通过调用 malloc、calloc 或 realloc 进行分配内存的。如果为空指针,则会分配一个新的内存块,且函数返回一个指向它的指针。
- size -- 内存块的新的大小,以字节为单位。如果大小为 0,且 ptr 指向一个已存在的内存块,则 ptr 所指向的内存块会被释放,并返回一个空指针
例
char *str;
/* 最初的内存分配 */
str = (char *) malloc(15);
strcpy(str, "runoob");
printf("String = %s, Address = %u\n", str, str);
/* 重新分配内存 */
str = (char *) realloc(str, 25);
strcat(str, ".com");
printf("String = %s, Address = %u\n", str, str);
free(str);
return(0);
4 三个函数的返回值都是一样的 一个无类型的指针(void*),指向申请内存空间的首地址
5 用三个函数分别完成申请存放4个int类型值的空间
int a* = (int*)malloc(4*sizeof(int))
int *b = (int*)calloc(4,sizeof(int))
int *c = (int*)realloc(a,5*sizeof(int))//改为5个int类型的内存空间