is a pointer, however you do not initialise this pointer so it points at a random (possibly invalid) location. Then you write to this location in your for loop. You are writing data to a random location in you computers memory, not a good idea.
Before using a pointer you must allocation some memory for it to point to, you do this for p, you point it at the string literal "My String" which the compiler allocates memory for. For dest you should use malloc in C or new in C++ to allocated it some memory from the heap.