#include <iostream>
#include <memory>
#include <cstdlib>
struct test {
int x;
std::string s;
void* operator new( std::size_t size) {
char * p = (char*) malloc( size );
for ( std::size_t i = 0; i < size; ++i ) {
p[i] = 0xba;
}
return p;
}
void operator delete(void* p) {
free(p);
}
};
void f() {
test t;
std::cout << t.x << std::endl;
t.x = 5;
}
void g() {
test t = test();
std::cout << t.x << std::endl;
t.x = 5;
}
int main() {
std::auto_ptr<test> p1( new test );
std::cout << std::hex << p1->x << std::endl;
std::auto_ptr<test> p2( new test() );
std::cout << std::hex << p2->x << std::endl;
f(); f();
g(); g();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgojaW5jbHVkZSA8Y3N0ZGxpYj4KCnN0cnVjdCB0ZXN0IHsKICAgIGludCB4OwogICAgc3RkOjpzdHJpbmcgczsKCiAgICB2b2lkKiBvcGVyYXRvciBuZXcoIHN0ZDo6c2l6ZV90IHNpemUpIHsKICAgICAgICBjaGFyICogcCA9IChjaGFyKikgbWFsbG9jKCBzaXplICk7CiAgICAgICAgZm9yICggc3RkOjpzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kgKSB7CiAgICAgICAgICAgIHBbaV0gPSAweGJhOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcDsKICAgIH0KICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZvaWQqIHApIHsKICAgICAgICBmcmVlKHApOwogICAgfQp9OwoKdm9pZCBmKCkgewogICAgdGVzdCB0OwogICAgc3RkOjpjb3V0IDw8IHQueCA8PCBzdGQ6OmVuZGw7CiAgICB0LnggPSA1Owp9Cgp2b2lkIGcoKSB7CiAgICB0ZXN0IHQgPSB0ZXN0KCk7CiAgICBzdGQ6OmNvdXQgPDwgdC54IDw8IHN0ZDo6ZW5kbDsKICAgIHQueCA9IDU7Cn0KCmludCBtYWluKCkgewogICAgc3RkOjphdXRvX3B0cjx0ZXN0PiBwMSggbmV3IHRlc3QgKTsKICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmhleCA8PCBwMS0+eCA8PCBzdGQ6OmVuZGw7CgogICAgc3RkOjphdXRvX3B0cjx0ZXN0PiBwMiggbmV3IHRlc3QoKSApOwogICAgc3RkOjpjb3V0IDw8IHN0ZDo6aGV4IDw8IHAyLT54IDw8IHN0ZDo6ZW5kbDsKCiAgICBmKCk7IGYoKTsKICAgIGcoKTsgZygpOwp9Cg==