realloc函数,malloc函数与calloc函数区别

一, malloc 

 void *malloc(unsigned int num_byte)

1,num_bytes为需要申请的内存大小,需要人为的去计算,申请的类型徐手动强转为对应指针的类型

2,申请的值是不确定的

二 calloc

void*calloc(size_t n, size_t size)

1, 比malloc多一个参数,省去了认为计算的麻烦,

2,申请的每一个值都会被初始化为0,因此也会降低效率,

三, realloc 

void *realloc(void *ptr, size_t newsize)

1, 与前两个大不同,主要用于对已申请的内存进行扩容

2,分三种情况: 若size 较小并且原申请内存还有多余空间,就直接在原内存后扩容,返回原空间的地址

                           若size较大,原内存不够,系统将重新分配一段内存,并将原内存拷贝到新内存中,原内存free

                           若size 非常大,系统申请内存失败,返回NULL

猜你喜欢

转载自blog.csdn.net/weixin_42720316/article/details/82918291