#include <iostream>
struct S
{
int data;
S* pair;
void print() const
{
std::cout << "data:" << data << " pair data:" << pair->data << std::endl;
}
};
int main() {
S* s = static_cast<S*>( malloc(sizeof(S)*2) );
void* p = malloc(100);
*static_cast<int*>(p) = 100500;
s[0].data = 1;
s[1].data = 2;
s[0].pair = &s[1];
s[1].pair = &s[0];
s[0].print();
s[1].print();
S* news = static_cast<S*>( realloc( s, sizeof(S)*3 ) );
if( news )
{
std::cout << s << " : " << news << std::endl;
s = news;
}
std::cout << "after realloc\n";
s[0].print();
s[1].print();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IFMKewoJaW50IGRhdGE7CglTKiBwYWlyOwoJCgl2b2lkIHByaW50KCkgY29uc3QKCXsKCQlzdGQ6OmNvdXQgPDwgImRhdGE6IiA8PCBkYXRhIDw8ICIgcGFpciBkYXRhOiIgPDwgcGFpci0+ZGF0YSA8PCBzdGQ6OmVuZGw7Cgl9Cn07CgoKaW50IG1haW4oKSB7CgkKCVMqIHMgPSBzdGF0aWNfY2FzdDxTKj4oIG1hbGxvYyhzaXplb2YoUykqMikgKTsKCQoJdm9pZCogcCA9IG1hbGxvYygxMDApOwoJKnN0YXRpY19jYXN0PGludCo+KHApID0gMTAwNTAwOwoKCXNbMF0uZGF0YSA9IDE7CglzWzFdLmRhdGEgPSAyOwoJc1swXS5wYWlyID0gJnNbMV07CglzWzFdLnBhaXIgPSAmc1swXTsKCQoJc1swXS5wcmludCgpOwoJc1sxXS5wcmludCgpOwoJCglTKiBuZXdzID0gc3RhdGljX2Nhc3Q8Uyo+KCByZWFsbG9jKCBzLCBzaXplb2YoUykqMyApICk7CglpZiggbmV3cyApCgl7CgkJc3RkOjpjb3V0IDw8IHMgPDwgIiA6ICIgPDwgbmV3cyA8PCBzdGQ6OmVuZGw7CgkJcyA9IG5ld3M7Cgl9CgkKCXN0ZDo6Y291dCA8PCAiYWZ0ZXIgcmVhbGxvY1xuIjsKCQoJc1swXS5wcmludCgpOwoJc1sxXS5wcmludCgpOwoJCglyZXR1cm4gMDsKfQ==