开发者

Why should I avoid using malloc in c++? [duplicate]

开发者 https://www.devze.com 2023-01-05 05:48 出处:网络
This question already has answers here: Closed 12 years ago. 开发者_Python百科 Possible Duplicates:
This question already has answers here: Closed 12 years ago. 开发者_Python百科

Possible Duplicates:

What is the difference between new/delete and malloc/free?

In what cases do I use malloc vs new?

Why should I avoid using malloc in c++?


Because malloc does not call the constructor of newly allocated objects.

Consider:

class Foo
{
public:
    Foo() { /* some non-trivial construction process */ }
    void Bar() { /* does something on Foo's instance variables */ }
};

// Creates an array big enough to hold 42 Foo instances, then calls the
// constructor on each.
Foo* foo = new Foo[42];
foo[0].Bar(); // This will work.

// Creates an array big enough to hold 42 Foo instances, but does not call
// the constructor for each instance.
Foo* foo = (Foo*)malloc(42 * sizeof(Foo));
foo[0].Bar(); // This will not work!
0

精彩评论

暂无评论...
验证码 换一张
取 消