c++中new和malloc的区别
时间: 2023-11-30 15:05:21 浏览: 106
在 C 语言中,`new` 和 `malloc` 都用于动态分配内存,但是它们之间有一些区别。
1. 语法:`new` 是 C++ 的关键字,而不是 C 的关键字。在 C 语言中,我们使用 `malloc` 函数来动态分配内存。
2. 类型:`new` 在分配内存时会考虑类型的大小,并根据类型进行内存分配。而 `malloc` 只关心分配的字节数,不会考虑类型。
3. 初始化:`new` 在分配内存后会调用对象的构造函数进行初始化,而 `malloc` 只是分配了一块内存,并不会对其中的内容进行初始化。
4. 错误处理:`new` 在分配失败时会抛出 `std::bad_alloc` 异常,而 `malloc` 在分配失败时会返回 `NULL`。
综上所述,虽然 `new` 和 `malloc` 都可以用于动态分配内存,但在 C 语言中我们一般使用 `malloc`,而在 C++ 中使用 `new` 更为常见。
相关问题
C 中 new 和 malloc 区别
malloc和free是C语言中的动态内存分配和释放函数,用于在程序运行时动态地分配和释放内存空间。malloc函数用于分配一块指定大小的内存空间,free函数用于释放已分配的内存空间。
new和delete是C++语言中的动态内存分配和释放运算符,用于在程序运行时动态地分配和释放内存空间。new运算符用于分配一块指定大小的内存空间,并返回指向该内存空间的指针,delete运算符用于释放已分配的内存空间。
总的来说,malloc和free是C语言中的动态内存分配和释放函数,new和delete是C++语言中的动态内存分配和释放运算符。它们的使用方法和功能类似,但是在C++中,new和delete还可以用于对象的构造和析构。
简答C++中new operator,operator new,malloc的区别
在C++中,new operator, operator new和malloc都可以用来在堆上分配内存,但它们之间有一些区别:
1. new operator是C++中的操作符,它会调用operator new来分配内存,然后调用对象的构造函数来初始化对象。与malloc不同,它可以自动计算所需的空间大小,并且不需要手动释放内存,因为它会自动调用对象的析构函数并释放内存。
2. operator new是一个函数,它只负责分配指定大小的内存,不会调用任何构造函数。因此,如果你想在分配内存后调用构造函数,你需要使用new operator。
3. malloc是C语言中的函数,它只负责分配指定大小的内存,不会调用任何构造函数。因此,如果你想在分配内存后调用构造函数,你需要使用new operator。
总之,new operator和operator new更适合C++中的对象分配,因为它们可以自动调用构造函数和析构函数。而malloc更适合C语言中的内存分配。
阅读全文