0
_ _ alloc——memory allocation 动态内存分配
三个函数原型:
extern void *malloc(unsigned int num_bytes);
void *calloc(size_t n, size_t size);
extern void *realloc(void *mem_address, unsigned int newsize);
1
malloc在前面的动态数组、二叉树等等地方都已经使用过。这里主要说明一下malloc和alloc的区别使用。
如下两个语句:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int *p_malloc=(int*) malloc (sizeof(int)*10);
int *p_calloc=(int*) calloc (10,sizeof(int));
system("pause");
}
首先用法就不相同,调用的参数不一样。
其次,如果监控内存,一目了然可以看出二者区别如下图:
所以说,calloc相比于malloc,会把分配的内存的值清零!也就是c(lear)alloc的意思。
2
realloc,重新分配某个指针的函数。
int *p_calloc=(int*) calloc (10,sizeof(int));
int *p_realloc=(int*) realloc(p_calloc,1*sizeof(int));
其内存变化为:
可以看到原来分配10个int空间,现在就变成了1个。
以上,可以明白三个函数,malloc,calloc,realloc的用法。