2014-12-07 65 views
-4

中最好地分配动态内存,这对于类和模板的C++中的内存分配更好。 malloc()或new;可以使用malloc()来为类或模板分配内存吗?如何在C++

+4

第1点:你应该提一下它为什么不起作用。第2点:不要在C++中使用'malloc'。 – 2014-12-07 13:25:36

+2

在C++中,你应该使用operator new。还可以看Park发表的评论... – AlexTheo 2014-12-07 13:29:38

+3

什么不适合你?它适用于我,一旦我包含malloc标题,并添加2失踪大括号。 http://ideone.com/DaIHvC – 2014-12-07 13:29:43

回答

1

应避免使用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()简单地获得,则这个假设不被满足。

+0

是的,'malloc'不是C++。但我会说过度使用'new'并不是很好的C++。只要做一个obja;'和B objb;' – 2014-12-07 14:01:34

+1

@AaronMcDaid你当然是对的。然而,在我的回答中,我假设OP会问这个,因为他需要动态分配:局部变量不适合所有目的。请避免基于意见的讨论。 – Christophe 2014-12-07 14:22:17

+1

嗨@Christophe。我理解并同意你的意见。我的评论不是很有帮助或完整。我想修复问题代码所需的最小更改是使用* placement *'new'。更进一步,'malloc'和placement'new'都可以被删除,并被替换为一个简单的'new'。最后,我们可以简单地摆脱'new'并将所有东西放在堆栈上。这给了我们三个不同的答案。 – 2014-12-08 14:58:22