Search code examples
c++standardsnew-operatordynamic-memory-allocation

What is wrong with using the new operator?


So I was recently told off on this site for using the new operator but I didn't get a response when I asked why. So my question is: is there actually something bad about using new?

The only reason I can think of is a memory leak when a new call isn't paired with a delete call.


Solution

  • You weren't told off. A comment said:

    You should never use new unless there's a good reason to.

    This is currently +2 (two upvotes agreeing with the comment).

    In the case of your example, using new is optional. You could have just as easily instantiated the object on the stack with:

    sf::RenderWindow window(...);
    

    This has the advantage of not needing an explicit delete and no way for the object to escape destruction when it is no longer needed.

    On a scale of zero (completely harmless) to ten (destroys lives and property), using new instead is maybe a 1. Still, it can drive some programmers crazy when they see it because of severe childhood early trauma being bitten by this kind of malfeasance.