您的位置:首页 > 其它

malloc函数和new操作(内含malloc新旧标准对比)

2010-07-18 14:19 309 查看
malloc函数和new操作均可以开辟一定的内存空间用以存储变量。但两者有以下几个不同:

1. malloc函数需要指定开辟的字节数,而new操作自动开辟相应大小的内存空间。

2. new操作返回指定类型的指针,而malloc函数返回void*,需要强制转换。

3. 回收内存时,一般malloc函数对应free函数,new操作对应delete操作,否则会引起memory leaking。

例如:

例一

int *p=NULL;

p=new int; //p指向一个int型变量,如果某系统中sizeof(int)是4个字节,那么p的值便是首地址

例二

int *p=NULL;

p=new int[100]; //p指向一个整型数组,p的地址是数组的首地址。

其中p++比p大一个整型的大小,比如4

p[1]是第二个整型的地址,注意和定义数组的区别。如果定义int p[100];那么p的值也是数组的首地址,但是p[i]的值就不是地址了。(试验后发现p[1]也是数组第二个数的值


例三

int *p=NULL;

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

旧的C标准中malloc返回char*,所以有时并不需要强制转换,新的ANSI C中返回空指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: