21xrx.com
2024-11-22 07:36:43 Friday
登录
文章检索 我的文章 写文章
new和malloc,它们有什么不同? C++中内存分配:new和malloc的区别
2023-07-01 22:39:07 深夜i     --     --
内存分配 new malloc 区别 C++

在C++中,内存分配是开发者经常需要考虑的问题。在这个过程中,开发者需要知道使用什么方法来分配内存。在C++语言中,有两种主要的方法来分配内存:使用new和使用malloc。在这两种方法中,实现的目标是相同的:在程序运行时将内存分配给变量或对象。但是,它们之间存在很大的差异。

new和malloc的主要区别在于:

1. 内存分配的方式

new关键字是C++中内存分配的运算符,它用于动态地分配内存。new分配的内存在堆上,而不是在栈上。而malloc是在C语言中使用的函数,它也用于动态地分配内存。与new不同的是,malloc返回的指针指向的是在堆中申请的未初始化的内存,用户需要手动初始化该内存。

2. 调用构造函数的能力

使用new时,会自动调用对象的构造函数进行初始化,而使用malloc时,需要手动调用构造函数进行初始化。这是由于new内存分配的是一个对象,可以自动调用构造函数进行初始化。而malloc分配的内存则是块未初始化的内存,不会自动调用构造函数。

3. 内存大小计算的方式

在使用new时,开发者只需要提供数据类型的名称,编译器将计算所需的内存大小并分配内存。而在使用malloc时,开发者需要手动计算所需的内存大小,并使用sizeof运算符来计算所需内存大小。

总的来说,new关键字在C++中是一个非常方便且容易使用的操作符,可以自动处理内存分配、调用构造函数、计算内存大小等事项。而malloc函数则在C语言中更为常见,需要手动处理对象的构造函数和内存大小计算等事项。

在选择使用new或malloc时,开发者需要知道它们之间的区别,并根据自己的需要和程序的特定要求来选择合适的方法进行内存分配。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复