fork(1) download
  1. #include <iostream>
  2. #include <cstdint>
  3.  
  4. struct One {
  5. int a = 1;
  6. };
  7.  
  8. struct Two {
  9. int a = 2;
  10. int b = 2;
  11. };
  12.  
  13. struct Three {
  14. int a = 3;
  15. int b = 3;
  16. int c = 3;
  17. };
  18.  
  19. int main() {
  20. int size = 3;
  21. auto a = (One*)std::malloc(size * sizeof(One));
  22. auto b = (Two*)std::malloc(size * sizeof(Two));
  23. auto c = (Three*)std::malloc(size * sizeof(Three));
  24.  
  25. auto aEndAddress = reinterpret_cast<uintptr_t>(a + size - 1);
  26. auto bEndAddress = reinterpret_cast<uintptr_t>(b + size - 1);
  27. auto cEndAddress = reinterpret_cast<uintptr_t>(c + size - 1);
  28. auto aBaseAddress = reinterpret_cast<uintptr_t>(a + 0);
  29. auto bBaseAddress = reinterpret_cast<uintptr_t>(b + 0);
  30. auto cBaseAddress = reinterpret_cast<uintptr_t>(c + 0);
  31. auto a1 = aEndAddress - aBaseAddress;
  32. auto b2 = bEndAddress - bBaseAddress;
  33. auto c3 = cEndAddress - cBaseAddress;
  34.  
  35. std::cout << "a-diff: " << a1 << ", b-diff: " << b2 << ", c-diff: " << c3 << std::endl;
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0s 4376KB
stdin
Standard input is empty
stdout
a-diff: 8, b-diff: 16, c-diff: 24