malloc/free与new/delete的区别
1.malloc与free是C/C++语言的标准库函数,new/delete是C++运算符;
2.new自动计算需要分配的空间,而malloc需要手工计算字节数;
3.new是类型安全的,而malloc不是,比如:
int* p=new float[2];//编译时指出错误
int* p=(int*)malloc(2*sizeof(double));//编译时无法指出错误
4.new调用operater new分配足够的空间,并调用相关对象的构造函数,而malloc不能调用构造函数;delete将调用该实例的析构函数,然后调用类的operater delete,以释放该实例占用的空间,而free不能调用析构函数;
5.malloc/free需要库文件支持,new/delete则不需要