中最好地分配动态内存,这对于类和模板的C++中的内存分配更好。 malloc()或new;可以使用malloc()来为类或模板分配内存吗?如何在C++
如何在C++
回答
应避免使用malloc()
分配C++对象。
使用C++实践重写你的main()
:
A *obj = new A(); // get memory and initialize the object
B<int> *objb = new B<int>(); // same
这工作更好,更容易阅读!
注:之类的语句*obj=A();
可以调用类特定的赋值操作符,它会认为*obj
已经通过构造函数初始化,并处于有效状态。如果记忆被malloc()
简单地获得,则这个假设不被满足。
是的,'malloc'不是C++。但我会说过度使用'new'并不是很好的C++。只要做一个obja;'和B
@AaronMcDaid你当然是对的。然而,在我的回答中,我假设OP会问这个,因为他需要动态分配:局部变量不适合所有目的。请避免基于意见的讨论。 – Christophe 2014-12-07 14:22:17
嗨@Christophe。我理解并同意你的意见。我的评论不是很有帮助或完整。我想修复问题代码所需的最小更改是使用* placement *'new'。更进一步,'malloc'和placement'new'都可以被删除,并被替换为一个简单的'new'。最后,我们可以简单地摆脱'new'并将所有东西放在堆栈上。这给了我们三个不同的答案。 – 2014-12-08 14:58:22
第1点:你应该提一下它为什么不起作用。第2点:不要在C++中使用'malloc'。 – 2014-12-07 13:25:36
在C++中,你应该使用operator new。还可以看Park发表的评论... – AlexTheo 2014-12-07 13:29:38
什么不适合你?它适用于我,一旦我包含malloc标题,并添加2失踪大括号。 http://ideone.com/DaIHvC – 2014-12-07 13:29:43