new与malloc的区别
1.new的定义
new是运算符,可以用于动态分配。如果想要撤销内存使用delete。new运算符使用的一般格式为new类型,用new分配数组空间时不能指定初值。如果由于内存不足等原因而无法正常分配空间,则new会返回一个空指针NULL,用户可以根据该指针的值判断分配空间是否成功。一般来说,使用new申请空间时,是从系统的“堆”(heap)中分配空间,申请所得的空间的位置时根据当时的内存的实际使用情况决定的。但是,在某些特殊情况下,可能需要在程序员指定的特定内存创建对象,这就是所谓的“定位放置new”(placement new)操作。例如:
int *p=new int(6);
2.malloc的定义
malloc的全称是memory allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,且分配的大小就是程序要求的大小。(来源百度百科)
void *malloc(int size);
3.new与malloc的区别
3.1属性方面
new是关键字,需要编译器支持;malloc是库函数,需要头文件支持。
3.2参数方面
new申请内存无需指定内存大小,编译器会根据类型信息自行计算。除此之外,new会调用构造函数。
int* p=new int;//分配大小为sizeof(int)的空间
int