#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNzdGRsaWI+CiNpbmNsdWRlIDxjc3RyaW5nPgoKdm9pZCBkdW1wKHZvaWQgKnMsIHNpemVfdCBzaXplKSB7CiAgICB1bnNpZ25lZCBjaGFyICpidWYgPSAodW5zaWduZWQgY2hhciopczsKICAgIGZvciAoc2l6ZV90IGk9MDsgaTxzaXplOyArK2kpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgc3RkOjpoZXggPDwgc3RkOjpzZXR3KDIpIDw8IHN0ZDo6c2V0ZmlsbCgnMCcpIDw8IChpbnQpYnVmW2ldIDw8ICIgIjsKICAgIH0KICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Cn0KCnN0cnVjdCBUZXN0IHsKICAgIFRlc3QoKSA6IHgoNSkgewogICAgICAgIHN0ZDo6Y291dCA8PCAiSW4gYyd0b3I6ICAgICAgICAgICAgIjsKICAgICAgICBkdW1wKHRoaXMsIHNpemVvZigqdGhpcykpOwogICAgICAgIG1lbXNldCh0aGlzLCAwLCBzaXplb2YoKnRoaXMpKTsKICAgIH0KICAgIHZpcnR1YWwgflRlc3QoKSB7CiAgICB9CiAgICBpbnQgeDsKfTsKCgppbnQgbWFpbigpIHsKICAgIFRlc3QgKnQgPSAoVGVzdCopY2FsbG9jKDEsIHNpemVvZihUZXN0KSk7CiAgICBzdGQ6OmNvdXQgPDwgIkJlZm9yZSBjb25zdHJ1Y3Rpb246ICI7CiAgICBkdW1wKHQsIHNpemVvZihUZXN0KSk7CiAgICBuZXcodCkgVGVzdDsKICAgIHN0ZDo6Y291dCA8PCAiQWZ0ZXIgY29uc3RydWN0aW9uOiAgIjsKICAgIGR1bXAodCwgc2l6ZW9mKFRlc3QpKTsKICAgIHJldHVybiAwOwp9