fork(1) download
  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <stddef.h>
  4. #include <string.h>
  5.  
  6. typedef struct A_
  7. {
  8. bool t;
  9. long long s;
  10. } A;
  11.  
  12. typedef struct B_
  13. {
  14. int t;
  15. long long s;
  16. } B;
  17.  
  18. int main(void) {
  19. A r1, r2;
  20. memset(&r1, 0, sizeof(A));
  21. memset(&r2, 0, sizeof(A));
  22.  
  23. r1.t = false;
  24. r1.s = 123123123;
  25.  
  26. r2.t = r1.t;
  27. r2.s = r1.s;
  28.  
  29. size_t Asize = sizeof(A);
  30. size_t paddSizeA = offsetof(A, s) - sizeof(r1.t);
  31. int Aresult = memcmp(&r1, &r2, sizeof(A));
  32.  
  33. B k1, k2;
  34. memset(&k1, 0, sizeof(B));
  35. memset(&k2, 0, sizeof(B));
  36.  
  37. k1.t = 0;
  38. k1.s = 123123123;
  39.  
  40. k2.t = k1.t;
  41. k2.s = k1.s;
  42.  
  43. size_t Bsize = sizeof(B);
  44. size_t paddSizeB = offsetof(B, s) - sizeof(k1.t);
  45. int Bresult = memcmp(&k1, &k2, sizeof(B));
  46.  
  47. printf("A struct size: %d -- Paddind A struct: %d -- memcmp res: %d\n", Asize, paddSizeA, Aresult);
  48. printf("B struct size: %d -- Paddind B struct: %d -- memcmp res: %d\n", Bsize, paddSizeB, Bresult);
  49. return 0;
  50. }
Success #stdin #stdout 0s 2008KB
stdin
Standard input is empty
stdout
A struct size: 12 -- Paddind A struct: 3 -- memcmp res: 0
B struct size: 12 -- Paddind B struct: 0 -- memcmp res: 0