码迷,mamicode.com
首页 > 其他好文 > 详细

malloc()的用法

时间:2015-04-10 17:40:57      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

 

 

malloc的全称是memory allocation,中文叫动态内存分配,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。原型为extern void *malloc(unsigned int num_bytes)。

 

在使用上,malloc 和 new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如:
 
1
2
3
int*p;
p=new int;
//返回类型为int*类型(整数型指针),分配大小为sizeof(int);
或:
1
2
3
int*parr;
parr=new int[100];
//返回类型为int*类型(整数型指针),分配大小为sizeof(int)*100;
而 malloc 则必须要由我们计算字节数,并且在返回后强行转换为实际类型的指针
1
2
3
4
5
6
7
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) ,用于指明一个整型数据需要的大小。
 
另外有一点不能直接看出的区别是,malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。

malloc()的用法

标签:

原文地址:http://www.cnblogs.com/liwenlin/p/4414970.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!