Welcome to Software Development on Codidact!
Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.
Is there any benefit to using new?
I've heard that in modern C++, smart pointers are preferred to raw pointers for ownership (the so-called RAII principle, as I understand it).
This makes sense, and since then I've always used them throughout my projects. This makes me realize though, that I can't really remember the last time I've used new
to allocate anything and have started to wonder if it's actually useful anymore.
In what (if any) situations are there benefits in using new
to allocate memory over std::make_unique
or std::make_shared
?
1 answer
Well, you still need (placement) new
for the implementation of the smart pointers themselves.
You would also use it (or malloc) to implement custom allocators, for example: https://www.boost.org/doc/libs/1_78_0/libs/pool/doc/html/boost/default_user_allocator_new_delete.html.
One unusual scenario is the following: Just recently I was involved in the implementation of a component that had a special requirement, namely that some of its objects should have "infinite" life time. These objects should therefore also not be destroyed at the end of main
, but exist up to the point of actual process termination. Therefore, what was needed there was a new
without delete
.
Maybe others have more examples - at least I can confirm your view that the use of new
has almost completely disappeared from source code.
0 comment threads