callocmallocrealloc函数的区别及用法

Posted frisk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了callocmallocrealloc函数的区别及用法相关的知识,希望对你有一定的参考价值。

/* 需要手动计算内存大小,未初始化 */
int *p  = (int *)malloc(20 * sizeof(int));
/* 不需要手动计算内存大小,初始化为0 */
int *q  = (int *)calloc(20, sizeof(int));
/* 动态内存 扩大/缩小
* 1.成功分配: * 1.1 返回地址相同, 原内存后 有 空余内存,返回原来指针的地址; * 1.2 返回地址不同, 原内存后 没有 空余内存,新分配一块儿内存,并把原来的内存内容拷贝过来,原来的内存释放掉;
* 2.失败返回NULL: * 2.1 原内存不释放, 重新分配的内存过大,分配失败,返回NULL,原内存不释放; * 2.1 原内存释放, 原指针不为NULL, 重新分配的大小为0,返回NULL,原内存释放,realloc(p, 0) === free(p);别这么用!
* 3.扩容后的内存较原来的小,数据会丢失
*/

int *pp = (int *)realloc(p, (20 + 10) * sizeof(int));

 

以上是关于callocmallocrealloc函数的区别及用法的主要内容,如果未能解决你的问题,请参考以下文章

PHP易混淆函数的区别及用法汇总

创建函数的三种方式及区别

JS中构造函数与普通函数的区别及JS构造函数原型和实例的关系

关于call和apply函数的区别及用法

js中创建函数的三种方式及区别

Pytthon:type函数和 isinstance 函数及区别