I was hoping that this

Code:
printf("%s\n", &argv[1]);
would make a simple one line program that would print the string pointed to by a pointer from another program if argv[1] was the address of the pointer (eg, bfde768f), but it seems not to work.

Now I notice that if I ask gdb (running without an input program) "x/s 0xbfde768f", it can't access this memory (it's "out of bounds"). I had thought memory was "protected" by simple assigned (ie. the same address won't be handed out twice) and not by actual restriction, as appears to be the case.

Is there a way around this?