new expression vs operator new in C++

Summary

Differentiating between C++'s new expression and operator new is crucial for effective memory management. A new expression handles both memory allocation and object initialization, creating an object directly. In contrast, operator new solely allocates raw memory, functioning similarly to malloc() without any object construction. Developers can overload operator new to implement custom memory allocation strategies, whereas the new expression itself cannot be overloaded.

In C++, there is a new mechanism for memory allocation and management. When we want to initialize an object, we can use new expression to get enough memory for storing an object and also initialize the object. When we want to create a new object, we can use new expression, for example:

Obj *obj=new Obj;


Basically, what the new expression does is to allocate enough memory for storing the obj object, in addition, it will initialize the object with some intial values.

Also, there is an operator new existing in C++, what it does is to allocate raw memory. It only controls allocating memory, not including the initiliation of object. It isn't much different from malloc(). We can call operator new explicitly:

char*x =static_cast<char*>(operatornew(10));

New expression cannot be overloaded, but operator new can be overloaded. You can define your own way to allocate memory in your class implementation.

For more information, you can refer :

The operator new function

The new operator

C++ NEW EXPRESSION OPERATOR NEW

  RELATED

  COMMENTS

0

No comment for this article.