#include <iostream>
#include <stdlib.h>
 
struct B{
  B(){std::cout<<"B("<<(void*)this<<")"<<std::endl;}
  ~B(){std::cout<<"B("<<(void*)this<<") del"<<std::endl;}
};
struct A : B{
  A(){std::cout<<"A("<<(void*)this<<")"<<std::endl;}
  ~A(){std::cout<<"A("<<(void*)this<<") del"<<std::endl;}
};
 
int main(){
   A* p = (A*)malloc(sizeof(A));
   std::cout<<(void*)p<<std::endl;
   new(p) A();
   p->~A();
   free(p);
   return 0;
}