add overload of ::new for placement support #101
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds an overload of
::new
that matches the signature required for placementnew
. For additional background, here's what cppreference has to say about placement new.When a programmer calls
new Foo
the existing overload ofnew
is called which usesmalloc
to provide the required amount of memory. To use placement, the programmer callsnew(ptr) Foo
whereptr
is a correctly aligned pointer to sufficient unused memory to hold an instance ofFoo
. The overload added in this PR is called which returns the passed in pointer to be used as the address of the newly created object.To destroy an object allocated with placement new call its destructor explicitly:
fooPtr->~Foo()
. There is no corresponding "placement delete".The following is a trivial example of placement new in action: