fork download
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cstdlib>
  4. #include <cstring>
  5.  
  6. int dump(void *s, size_t size) {
  7. unsigned char *buf = (unsigned char*)s;
  8. for (size_t i=0; i<size; ++i) {
  9. std::cout << std::hex << std::setw(2) << std::setfill('0') << (int)buf[i] << " ";
  10. }
  11. std::cout << std::endl;
  12. return 5;
  13. }
  14.  
  15. struct Test {
  16. Test() : x(dump(this, sizeof(*this))) {
  17. std::cout << "In c'tor: ";
  18. dump(this, sizeof(*this));
  19. memset(this, 0, sizeof(*this));
  20. }
  21. virtual ~Test() {
  22. }
  23. int x;
  24. };
  25.  
  26. struct T : Test
  27. {};
  28.  
  29. int main() {
  30. T *t = (T*)calloc(1, sizeof(T));
  31. std::cout << "Before construction: ";
  32. dump(t, sizeof(Test));
  33. new(t) T;
  34. std::cout << "After construction: ";
  35. dump(t, sizeof(Test));
  36. return 0;
  37. }
Success #stdin #stdout 0.02s 2856KB
stdin
Standard input is empty
stdout
Before construction: 00 00 00 00 00 00 00 00 
c0 8d 04 08 00 00 00 00 
In c'tor:            c0 8d 04 08 05 00 00 00 
After construction:  90 8d 04 08 00 00 00 00