fork download
  1. #include <iostream>
  2.  
  3. struct S
  4. {
  5. int data;
  6. S* pair;
  7.  
  8. void print() const
  9. {
  10. std::cout << "data:" << data << " pair data:" << pair->data << std::endl;
  11. }
  12. };
  13.  
  14.  
  15. int main() {
  16.  
  17. S* s = static_cast<S*>( malloc(sizeof(S)*2) );
  18.  
  19. void* p = malloc(100);
  20. *static_cast<int*>(p) = 100500;
  21.  
  22. s[0].data = 1;
  23. s[1].data = 2;
  24. s[0].pair = &s[1];
  25. s[1].pair = &s[0];
  26.  
  27. s[0].print();
  28. s[1].print();
  29.  
  30. S* news = static_cast<S*>( realloc( s, sizeof(S)*3 ) );
  31. if( news )
  32. {
  33. std::cout << s << " : " << news << std::endl;
  34. s = news;
  35. }
  36.  
  37. std::cout << "after realloc\n";
  38.  
  39. s[0].print();
  40. s[1].print();
  41.  
  42. return 0;
  43. }
Success #stdin #stdout 0s 3428KB
stdin
Standard input is empty
stdout
data:1 pair data:2
data:2 pair data:1
0x8d94008 : 0x8d94088
after realloc
data:1 pair data:2
data:2 pair data:0