Das Programm erzeugt eine Instanz der Klasse A in einem bereits bestehenden Speicherbereich, benutzt es und baut das Objekt anschließend wieder ab.
Als Hinweis: Grundsätzlich sollte auch Placement-Delete implementiert werden ( operator delete( void *, void * ) ), um Fehlern zu begegnen, die durch eine Exception im Konstruktor entstehen.
Code: Alles auswählen
#include <stdio.h>
#include <new>
char Buffer[ 5000 ];
class A
{
int const a;
public:
A( int value ) : a( value )
{
printf( "Constructing at %x\n", (int) this );
}
~A()
{
printf( "Destructing at %x\n", (int) this );
}
void Output()
{
printf( "Value is %d\n", a );
}
};
int main( void )
{
printf( "Buffer is at %x\n", (int) Buffer );
A * temp = new (Buffer) A(1);
temp->Output();
temp->~A();
return 0;
}