区别: 1. new 自动计算需要分配的空间,而malloc要手动计算分配的空间。
2. new 是类型安全的,而malloc不是。 如: int * p = new double[3]; //编译时能够检查出错误 int* p = malloc(n*sizeof(double));//编译时不能够检查出错误
3. malloc/free需要库文件支持,而new/delete不用。
4. operator new 对应于malloc, 但operator new 可以重载,可以自定义内存分配策略,甚至不做内存分配。但malloc做不到。
5. new 能为非内部数据分配动态内存,而malloc不能。
那为什么有了new/delete,还要malloc/free呢? 1. malloc/free 是C++/C 语言的标准库函数,只能够用来为内部数据类型分配空间,new/delete是C++的运算符,他们都能够用于申请动态内存和释放内存。 2. 由于malloc/free不能用来满足动态对象的要求,对象在创建的同时要自动执行构造函数,对象在消亡的时候需要自 ...