this question has answer here:
- access array beyond limit in c , c++ 7 answers
this code. playing around small piece of code wrote.
even though character array of pointers of 2 elements, able write in memory location using pointer address of character array indirectly when having 2 elements.
i thinking in wrong way or because over-exerted today.
i hope can shed light on it.
#include <stdio.h> int main(void) { char a[] ="gkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3u"; char b[] ="gkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3ugkdkoswddmjqkt6fgz3u"; char *line_store[2]; *(line_store) = a; *(line_store + 2) = b; printf("%s\n\n", *(line_store)); printf("%s\n\n", *(line_store+1)); printf("%s\n\n", *(line_store+2)); return 0; }
your code works because c doesn't boundary checking on array. you're writing beyond last element allocated, causes write unallocated space in memory. working accident, , subsequent runs theoretically crash, or overwrite other valid memory segments, depending , how done in larger program.