Possible Duplicate:
C++'s “placement new”
in the below code what does Line 3 represents, is it the way of typecasting? or what
void someCode()
{
char memory[sizeof(Fred)]; // Line #1
void* place = memory; // Line #2
Fred* f = new(place) Fred(); // Line #3
// The pointers f and place will be equal
...
}
Fred
type might require stricter alignment than char
. You should use aligned_storage
instead, available in C++11 and TR1 - Derek Ledbetter 2012-04-05 18:30
This is a typical usage of Placement new.
It allows you to allocate memory and then construct objects at that particular memory location.
Line #3 essentially just calls the constructor Fred::Fred()
. The this
pointer in the Fred
constructor will be equal to place
. The returned pointer f
will therefore be equal to place
.
place
to f
. This is a functionality provided by the placement new - Alok Save 2012-04-05 18:10