malloc和free是标准库函数,支持覆盖; new和delete是运算符,支持重载。 malloc只分配内存空间,不具有调用构造函数的功能; new除了分配空间外,还调用构造函数。 如果malloc分配内存失败,则返回NULL; 如果new内存分配失败,将抛出bac_alloc异常。 malloc返回void类型指针,new返回具体的类型指针。 malloc要求明确指定所需内存的大小。 使用new操作符申请内存分配时,不需要指定内存块的大小。 编译器根据类型信息进行自我计算。 new封装了malloc,直接free不会报告错误,但这只是释放内存,而不会分析结构对象。