您的位置:首页 > 其它

malloc的两个兄弟calloc,realloc你认识吗?

2014-12-12 16:05 330 查看
看下面程序,然后解释:





malloc:

1,其内只有一个参数,一个指定所需字节数的整数。

2,malloc它允许从空间内存池中分配内存。

3,使用malloc时,已分配的内存中可以是任意的值.

4,函数原型 : void *malloc(unsigned size)。//动态申请size个字节的内存空间;

功能:在内存的动态存储区中分配一块长度为" size" 字节的

5,(类型说明符*)表示把返回值强制转换为该类型指针。

calloc:

1,存储在已分配的内存空间中的值默认为0.

2,colloc需要两个参数,第一个是需要分配内存的变量的个数,第二个是每个变量的大小.

3,(void *)calloc(unsigned n,unsigned size)// 用于向系统动态申请n个,
每个占size个字节的内存空间;

并把分配的内存全都初始化为零值。函数的返回值为该区域的首地址

4,

5,

区别:两者都是动态分配内存。主要的不同是malloc不初始化分配的内存,已分配的内存中可以是任意的值. calloc 初始化已分配的内存为0。次要的不同是calloc返回的是一个数组,而malloc返回的是一个对象。

realloc:

1,原型:extern void *realloc(void *mem_address, unsigned int newsize);

2,用法:#include <stdlib.h> 有些编译器需要#include <alloc.h>

3,功能:改变mem_address所指内存区域的大小为newsize长度。

4,说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。

5, 当内存不再使用时,应使用free()函数将内存块释放。

6,注意:这里原始内存中的数据还是保持不变的。

7,(void *)realloc(void *p,unsigned size)//将指针p所指向的已分配内存区的大小改为size
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: