文档介绍:c中malloc的使用方法:c语言中malloc的使用方法
c中malloc的使用方法
c中malloc的使用方法 下面xx就跟你们具体介绍下c中malloc的使用方法的使用方法,期望对你们 有用。
c中malloc的使用方法的使用方法以下:
函数申明(函数原型):
void *malloc(int size);
说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型 是 void* 类型。void* 表示未确定类型的指针。C,C++要求,void* 类型能够强 制转换为任何其它类型的指针。
从函数申明上能够看出。malloc 和 new 最少有两个不一样: new 返回 指定类型的指针,而且能够自动计算所需要大小。比如:
int *p;
p = new int;
//返回类型为int* 类型(整数型指针),分配大小为 sizeof(int);
或:
int* parr;
parr = new int 100;
//返回类型为 int* 类型(整数型指针),分配大小 为 sizeof(int) * 100;
而 malloc 则必需由我们计算要字节数,而且在返回后强行转换为实 际类型的指针。
int* p;
p = (int *) malloc (sizeof(int));
第一、malloc 函数返回的是 void * 类型,假如你写成:p = malloc (sizeof(int));
则程序无法经过编译,报错:“不能将 void* 赋值给 int * 类型变量”。
因此必需经过 (int *) 来将强制转换。第二、函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小。
假如你写成:
int* p = (int *) malloc (1);
代码也能经过编译,但实际上只分配了1个字节大小的内存空间,当 你往里头存入一个整数,就会有3个字节无家可归,而直接“住进邻居家”!造成 的结果是后面的内存中原有数据内容全部被清空。
malloc 也能够达成 new 的效果,申请出一段连续的内存,方法无 非是指定你所需要内存大小。
比如想分配100个int类型的空间:
int* p = (int *) malloc ( sizeof(int) * 100 );
//分配能够放得下100个整数 的内存空间。
另外有一点不能直接看出的区分是,malloc 只管分配内存,并不能 对所得的内存进行初始化,因此得到的一片新内存中,其值将是随机的。
除了分配及最终释放的方法不一样以外,经过malloc或new得到指针, 在其它操作上保持一致。
============================================= 函数malloc和calloc全部能够用来动态分配内存空间,但二者稍有区 别。
malloc函数有一个参数,即要分配的内存空间的大小: void *malloc(size_t size);
calloc函数有两个参数,分别为元素的数目和每个元素的大小,这两个 参数的乘积就是要分配的内存空间的大小。