欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

malloc与new的区别

程序员文章站 2022-05-31 09:01:50
...

void* malloc(int size)

含义: 向系统申请分配指定size个字节的内存空间。
返回类型是void*,表示未确定类型的指针。void* 可以强制转换为其他任何类型的指针。

malloc与new

  • new返回指定类型的指针,并可以自动计算所需要的大小;malloc必须由我们计算字节数,并且返回会强制转换为实际类型的指针。
  • malloc只管内存分配,并不能对所得的内存进行初始化,所以所得的一片新内存中,其值是随机的。

例如:
在动态分配的顺序表中,若要申请一片新的内存空间,可以使用:

L.data = (ElemType *)malloc(sizeof(ElemType) *  InitSize);
L.data = new ElemType[InitSize];

两种均可,都是向申请InitSize * sizeof(ElemType) (表的初始长度 * 每个数据元素的大小)大小的内存空间,其中前一种是C语言写法,后一种是C++写法。