new和malloc都是在动态内存分配时使用的。它们的基本功能相同:在程序运行期间从堆(heap)中分配一段指定大小的内存空间。但是它们也有以下区别:
-
语法:new是C++特有的运算符,而malloc是C语言中的函数。
-
类型:new在创建并初始化对象时比malloc更便捷。new会自动调用构造函数并返回指向对象的指针,而malloc只是返回分配空间的地址,不会调用构造函数。
-
内存分配大小:new运算符需要指定类型,而malloc所分配的内存大小则是以字节为单位。
-
异常处理:new 能够抛出 bad_alloc 异常,这是在运行时发现它无法为程序提供所需大小的内存时发生的。而 malloc 不会抛出异常,它只会在内存不足的情况下返回 null 指针。
综上所述,new更适用于C++中创建和初始化对象,而malloc更适用于纯C语言中进行内存分配。