1 / 7
文档名称:

2021年c中malloc的使用方法-c语言中malloc的使用方法.docx

格式:docx   大小:17KB   页数:7
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

2021年c中malloc的使用方法-c语言中malloc的使用方法.docx

上传人:非学无以广才 2021/4/1 文件大小:17 KB

下载得到文件列表

2021年c中malloc的使用方法-c语言中malloc的使用方法.docx

相关文档

文档介绍

文档介绍: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函数有两个参数,分别为元素的数目和每个元素的大小,这两个 参数的乘积就是要分配的内存空间的大小。