new和malloc在c ++中的区别

这个问题在这里已经有了答案:

  • 我在哪些情况下使用malloc vs new? 18个答案

  • malloc只分配内存,它不调用可以使对象处于不确定状态的构造函数。

    在C ++中,你几乎不应该使用malloccallocfree 。 如果可能,避免使用newnew[] ,而是使用对象实例或实例向量。


    至于你的第二个问题(这与第一个问题非常相关), *(myBoxArray2).printer(23)是错误的. 选择运算符优先于解引用运算符* 。 这意味着首先你使用. 成员选择器上的指针无效,并且您试图取消引用哪个printer返回,这也是错误的,因为它不返回任何内容。

    你需要(*myBoxArray2).printer(23) (注意星号的位置在圆括号内),这与myBoxArray2->printer(23)完全相同。

    另请注意, myBoxArray2->printer(23)myBoxArray2[0].printer(23)


    不同之处在于malloc根本没有初始化分配内存。 另一方面, new调用相应的构造函数来初始化该内存(如果该构造函数用于初始化该内存)并执行其他操作以使类可用。

    delete调用析构函数。

    经验法则是:除非你知道你在做什么,否则不要在malloc使用C ++。

    链接地址: http://www.djcxy.com/p/78485.html

    上一篇: differences between new and malloc in c++

    下一篇: Which is more optimal: `new` or `calloc`?