fork(2) download
  1. #include <stdio.h>
  2.  
  3. typedef unsigned long long int uint64_t;
  4. typedef unsigned short uint16_t;
  5. typedef unsigned long long int * uintptr_t;
  6.  
  7. uint64_t get_value() {
  8. return 0x1020304050607080ULL;
  9. }
  10.  
  11. int main(void) {
  12. uint64_t value = get_value();
  13. uintptr_t addr = (uintptr_t)&value;
  14.  
  15. uint16_t u16 = *(uint16_t*)addr;
  16. uint16_t u16_2 = *(uint16_t*)&value;
  17. uint64_t u64 = (*(uint64_t*)addr) & 0xFFFF;
  18. uint16_t* ptr = (uint16_t*)&value;
  19. printf("u16 = 0x%x, u16_2 = 0x%x, u64 = 0x%llx, *ptr=0x%x\n", u16, u16_2, u64, *ptr);
  20.  
  21. printf("*ptr = 0x%x\n", *ptr);
  22. printf("--- loop start ---\n");
  23. for (int i=0; i<4; ++i) {
  24. printf("*ptr = 0x%x\n", *ptr);
  25. ptr++;
  26. }
  27.  
  28. printf("value = 0x%llx\n", value);
  29.  
  30. return 0;
  31. }
  32.  
Success #stdin #stdout 0s 5536KB
stdin
Standard input is empty
stdout
u16 = 0x7080, u16_2 = 0x7080, u64 = 0x7080, *ptr=0x7080
*ptr = 0x7080
--- loop start ---
*ptr = 0x2230
*ptr = 0x6d1d
*ptr = 0x5609
*ptr = 0x0
value = 0x1020304050607080