/* this is a sample file which demonstrates bad access of memory */ #include #include #include "genlib.h" main() { int i; char c; string s; bool b; double d; float e; int array2[5000]; int array1[10]; array2[2] = 12345; array1[12] = 98765; /* this is a very bad thing to do */ printf("variable \tsize \taddress \tvalue\n"); printf(" i \t%d\t%u\t%d\n",sizeof i, &i, i); printf(" c \t%d\t%u\t%c\n",sizeof c, &c, c); printf(" s \t%d\t%u\t%s\n",sizeof s, &s, s); printf(" b \t%d\t%u\t%i\n",sizeof b, &b, b); printf(" d \t%d\t%u\t%g\n",sizeof d, &d, d); printf(" e \t%d\t%u\t%g\n",sizeof e, &e, e); printf(" array1 \t%d\t%u\t%u\n",sizeof array1, &array1, array1); printf(" array2 \t%d\t%u\t%u\n",sizeof array2, &array2, array2); printf("array1[0]\t%d\t%u\t%d\n",sizeof (array1[0]), &array1[0], array1[0]); printf("array1[1]\t%d\t%u\t%d\n",sizeof (array1[1]), &array1[1], array1[1]); printf("array1[2]\t%d\t%u\t%d\n",sizeof (array1[2]), &array1[2], array1[2]); printf("array1[12]\t%d\t%u\t%d\n",sizeof (array1[12]), &array1[12], array1[12]); printf("array2[2]\t%d\t%u\t%d\n",sizeof (array2[2]), &array2[2], array2[2]); printf("\n"); } /* end of c file*/ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ below is the output when compiled and run (on one particular day). note: the exact values will vary each time the program is run and compiled. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ variable size address value i 4 3758094884 -536872284 c 1 3758094883  s 4 3758094876 ßÿû| b 4 3758094872 3 d 8 3758094864 0 e 4 3758094860 0 array1 40 3758074816 3758074816 array2 20000 3758074856 3758074856 array1[0] 4 3758074816 0 array1[1] 4 3758074820 0 array1[2] 4 3758074824 0 array1[12] 4 3758074864 98765 array2[2] 4 3758074864 98765