C++中的New和C语言中malloc区别?
时间: 2023-04-02 09:01:08 浏览: 88
C 中的 New 和 C 语言中的 malloc 有很大的区别。New 是 C++ 中的关键字,用于动态分配内存并调用构造函数初始化对象,而 malloc 是 C 语言中的函数,用于动态分配内存。New 返回的是对象的指针,而 malloc 返回的是 void 类型的指针,需要进行类型转换。此外,New 会自动计算所需的内存大小,而 malloc 需要手动指定所需的内存大小。
相关问题
c语言new和malloc区别
在 C 语言中,new 和 malloc 都是用于动态内存分配的函数,但是它们有着不同的用法和行为。
1. 语法不同:new 是 C++ 语言中的运算符,而 malloc 是 C 语言中的函数,所以在 C 语言中不能使用 new。
2. 分配内存的方式不同:new 在分配内存时会自动计算所需内存大小,并返回已分配内存的指针。而 malloc 需要显式地指定所需内存大小,并返回已分配内存的指针。
3. 初始化内存的方式不同:new 在分配内存时会自动调用相应类型的构造函数来初始化内存,而 malloc 只是简单地分配一段内存空间,不会进行初始化。
4. 返回值类型不同:new 返回的是对象类型的指针,而 malloc 返回的是 void 类型的指针。
5. 释放内存的方式不同:使用 new 分配的内存必须使用 delete 进行释放,而使用 malloc 分配的内存必须使用 free 进行释放。
总之,new 和 malloc 都可以用于动态内存分配,但是它们的使用方式和行为有所不同,需要根据具体情况进行选择。
简答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语言中的内存分配。