malloc的使用

malloc函数头文件

#include <stdlib.h>

或者

#include <malloc.h>

 

malloc函数定义

extern void *malloc(unsigned int num_bytes);

 

malloc函数使用

使用方法和注意事项

int *p;

p = (int*)malloc(sizeof(int) * 128);

//分配128个(可根据实际需要替换该数值)整型存储单元,

//并将这128个连续的整型存储单元的首地址存储到指针变量p中

double *pd = (double*)malloc(sizeof(double) * 12);

//分配12个double型存储单元,

//并将首地址存储到指针变量pd中

第一、malloc 函数返回的是 void * 类型。

对于C++,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。

所以必须通过 (int *) 来将强制转换。而对于C,没有这个要求,但为了使C程序更方便的移植到C++中来,建议养成强制转换的习惯。

第二、函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小。

在Linux中可以有这样:malloc(0),这是因为Linux中malloc有一个下限值16Bytes,注意malloc(-1)是禁止的;但是在某些系统中是不允许malloc(0)的。

 

type *p;

if(NULL == (p = (type*)malloc(sizeof(type))))

/*请使用if来判断,这是有必要的*/

{

    perror("error...");

    exit(1);

}

.../*其它代码*/

free(p);

p = NULL;/*请加上这句*/

在规范的程序中我们有必要按照这样的格式去使用malloc及free:确保空间成功

 

 

 

 

 

 

 

 

 

 

 

 

 

 

与new的区别

int *p;

p = new int;

//返回类型为int *类型(整数型指针),分配大小为sizeof(int);

int *parr;

parr = new int[100];

//返回类型为int *类型(整数型指针),分配大小为sizeof(int) * 100;

 

注意事项

A、申请了内存空间后,必须检查是否分配成功。

B、当不需要再使用申请的内存时,记得释放;释放后应该把指向这块内存的指针指向NULL,防止程序后面不小心使用了它。

C、这两个函数应该是配对。如果申请后不释放就是内存泄露;如果无故释放那就是什么也没有做。释放只能一次,如果释放两次及两次以上会出现错误(释放空指针例外,释放空指针其实也等于啥也没做,所以释放空指针释放多少次都没有问题)。

D、虽然malloc()函数的类型是(void *),任何类型的指针都可以转换成(void *),但是最好还是在前面进行强制类型转换,因为这样可以躲过一些编译器的检查。

 

 

 

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值