fork download
  1. #include <stdio.h>
  2. #include <setjmp.h>
  3. #include <stdlib.h>
  4. #include <signal.h>
  5.  
  6. jmp_buf env;
  7.  
  8. void handler(int s) {
  9. signal(SIGSEGV, handler);
  10. longjmp(env, 1);
  11. }
  12.  
  13. int main() {
  14. int a[2][2] = {{0, 1}, {2, 3}};
  15. int retval;
  16. signal(SIGSEGV, handler);
  17. if (setjmp(env) == 0) {
  18. retval = **a;
  19. puts("a[2][2] is a[2][2]");
  20. } else puts("a[2][2] is not a[2][2]");
  21. if (setjmp(env) == 0) {
  22. retval = **((int **) a);
  23. puts("a[2][2] is *a[2]");
  24. } else puts("a[2][2] is not *a[2]");
  25. return retval;
  26. }
  27.  
Success #stdin #stdout 0.02s 1676KB
stdin
Standard input is empty
stdout
a[2][2] is a[2][2]
a[2][2] is not *a[2]