fork download
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4.  
  5. struct a
  6. {
  7. void *ptr;
  8. unsigned long val;
  9. };
  10.  
  11. void func(struct a *id,void *ptr)
  12. {
  13. memset(id, 0, sizeof(*id));
  14.  
  15. id->ptr = ptr;
  16. if (sizeof(id->val) >= sizeof(id->ptr))
  17. {
  18. id->val = (unsigned long)id->ptr;
  19. }
  20.  
  21. }
  22. void func2(struct a *id)
  23. {
  24. unsigned char errno;
  25. printf("errno-address=%lu\n", &errno);
  26. func(id,&errno);
  27. }
  28.  
  29. int main()
  30. {
  31. struct a *id;
  32. id = malloc(sizeof(*id));
  33. func2(id);
  34. printf("after-changing=%lu\n", id->val);
  35. return 0;
  36. }
  37.  
  38.  
Success #stdin #stdout 0.01s 1808KB
stdin
Standard input is empty
stdout
errno-address=3219979511
after-changing=3219979511