malloc calloc realloc区分
相同点:
1.都是C标准库提供动态内存申请的库函数
2.返回值类型都是void* ,因此在使用的时候必须强转
3.申请空间成功,返回空间的首地址,失败返回NULL,因此在使用时必须进行判空
4.申请的空间都在堆上,使用完成后必须要使用free进行释放,否则会存在内存泄漏
不同:
malloc:参数申请空间大小的字节数,直接将空间申请成功返回给用户
calloc:有两个参数1表示元素个数 2表示元素类型
将申请好的空间全部初始化为0
realloc:将ptr所指向的空间调整为size个字节
void* realloc(void* ptr,size_t size);
1.ptr==NULL realloc相当于malloc
2.ptr!=NULL realloc将空间调整到size个大小的空间(然后返回首地址空间)