#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <cstring>
int 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;
return 5;
}
struct Test {
Test() : x(dump(this, sizeof(*this))) {
std::cout << "In c'tor: ";
dump(this, sizeof(*this));
memset(this, 0, sizeof(*this));
}
virtual ~Test() {
}
int x;
};
struct T : Test
{};
int main() {
T *t = (T*)calloc(1, sizeof(T));
std::cout << "Before construction: ";
dump(t, sizeof(Test));
new(t) T;
std::cout << "After construction: ";
dump(t, sizeof(Test));
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RyaW5nPgoKaW50IGR1bXAodm9pZCAqcywgc2l6ZV90IHNpemUpIHsKICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiA9ICh1bnNpZ25lZCBjaGFyKilzOwogICAgZm9yIChzaXplX3QgaT0wOyBpPHNpemU7ICsraSkgewogICAgICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmhleCA8PCBzdGQ6OnNldHcoMikgPDwgc3RkOjpzZXRmaWxsKCcwJykgPDwgKGludClidWZbaV0gPDwgIiAiOwogICAgfQogICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKICAgIHJldHVybiA1Owp9CgpzdHJ1Y3QgVGVzdCB7CiAgICBUZXN0KCkgOiB4KGR1bXAodGhpcywgc2l6ZW9mKCp0aGlzKSkpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIkluIGMndG9yOiAgICAgICAgICAgICI7CiAgICAgICAgZHVtcCh0aGlzLCBzaXplb2YoKnRoaXMpKTsKICAgICAgICBtZW1zZXQodGhpcywgMCwgc2l6ZW9mKCp0aGlzKSk7CiAgICB9CiAgICB2aXJ0dWFsIH5UZXN0KCkgewogICAgfQogICAgaW50IHg7Cn07CgpzdHJ1Y3QgVCA6IFRlc3QKe307CgppbnQgbWFpbigpIHsKICAgIFQgKnQgPSAoVCopY2FsbG9jKDEsIHNpemVvZihUKSk7CiAgICBzdGQ6OmNvdXQgPDwgIkJlZm9yZSBjb25zdHJ1Y3Rpb246ICI7CiAgICBkdW1wKHQsIHNpemVvZihUZXN0KSk7CiAgICBuZXcodCkgVDsKICAgIHN0ZDo6Y291dCA8PCAiQWZ0ZXIgY29uc3RydWN0aW9uOiAgIjsKICAgIGR1bXAodCwgc2l6ZW9mKFRlc3QpKTsKICAgIHJldHVybiAwOwp9