new和malloc有什么区别?
时间: 2023-12-09 20:03:55 浏览: 32
new和malloc都可以用来在堆上分配内存,但是它们之间有几个重要的区别:
1. new是C++的运算符,而malloc是C语言的库函数。
2. new会调用对象的构造函数进行对象初始化,而malloc不会。因此,对于C++类的对象,使用new更为方便。
3. new返回的是类型安全的指针,而malloc返回的是void指针,需要进行强制类型转换。
4. new可以重载,而malloc不能。
5. new抛出异常而不是返回NULL,这使得代码更加健壮。
综上所述,对于C++程序,建议使用new来分配内存,特别是对于需要进行对象初始化的情况。而在C程序中,malloc是唯一的选择。
相关问题
C++中的New和C语言中malloc区别?
C 中的 New 和 C 语言中的 malloc 有很大的区别。New 是 C++ 中的关键字,用于动态分配内存并调用构造函数初始化对象,而 malloc 是 C 语言中的函数,用于动态分配内存。New 返回的是对象的指针,而 malloc 返回的是 void 类型的指针,需要进行类型转换。此外,New 会自动计算所需的内存大小,而 malloc 需要手动指定所需的内存大小。
malloc分配内存和new分配内存有什么区别
1. 语法不同:malloc是C语言中的函数,需要使用头文件stdlib.h来调用;而new是C++中的关键字,不需要包含任何头文件。
2. 返回类型不同:malloc返回的是void*指针类型,需要进行强制类型转换;而new返回的是具体类型的指针,不需要进行强制类型转换。
3. 分配内存的方式不同:malloc只负责分配内存,不会自动调用构造函数,需要手动初始化对象;而new则会调用构造函数来初始化对象。
4. 内存越界检查不同:malloc分配内存时不会检查数组越界问题,而new会检查是否越界。
5. 内存释放方式不同:malloc分配的内存需要使用free函数进行释放;而new分配的内存需要使用delete关键字进行释放。
总的来说,new分配内存相对于malloc更加方便、安全,而且可以自动调用构造函数进行对象初始化,是C++中更为推荐的内存分配方式。但是,在一些特定的场景下(比如需要与C语言代码进行交互),还是需要使用malloc。