#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cstring>

void dump(void *s, size_t size) {
    unsigned char *buf = (unsigned char*)s;
    for (size_t i=0; i<size; ++i) {
        std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)buf[i] << " ";
    }
    std::cout << std::endl;
}

struct Test {
    Test() : x(5) {
        std::cout << "In c'tor:            ";
        dump(this, sizeof(*this));
        memset(this, 0, sizeof(*this));
    }
    virtual ~Test() {
    }
    int x;
};


int main() {
    Test *t = (Test*)calloc(1, sizeof(Test));
    std::cout << "Before construction: ";
    dump(t, sizeof(Test));
    new(t) Test;
    std::cout << "After construction:  ";
    dump(t, sizeof(Test));
    return 0;
}