#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
struct node {
std::string data;
~node() { cout<<"object destroyed"<<endl; }
};
int main() {
node * n = new node;
void *p = malloc(sizeof(node)); // not so a good idea !
node *n2 = new (p)node; // but ok, it's feasible.
n->data.assign("string");
n2->data.assign("string");
cout << p<<" is " << n2 <<endl;
delete n;
delete n2;
free(p);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IG5vZGUgewogc3RkOjpzdHJpbmcgZGF0YTsKIH5ub2RlKCkgeyBjb3V0PDwib2JqZWN0IGRlc3Ryb3llZCI8PGVuZGw7IH0KfTsKCmludCBtYWluKCkgewogIG5vZGUgKiBuID0gbmV3ICBub2RlOwogIHZvaWQgKnAgPSBtYWxsb2Moc2l6ZW9mKG5vZGUpKTsgICAvLyBub3Qgc28gYSBnb29kIGlkZWEgISAKICBub2RlICpuMiA9IG5ldyAocClub2RlOyAgICAgICAgICAgLy8gYnV0IG9rLCBpdCdzIGZlYXNpYmxlLiAKCiAgbi0+ZGF0YS5hc3NpZ24oInN0cmluZyIpOwogIG4yLT5kYXRhLmFzc2lnbigic3RyaW5nIik7CiAgY291dCA8PCBwPDwiIGlzICIgPDwgbjIgIDw8ZW5kbDsgCiAgZGVsZXRlIG47IAogIGRlbGV0ZSBuMjsgCiAgZnJlZShwKTsgICAKIAogIHJldHVybiAwOwp9