すみません。ポインタについて教えてください。

char *str = "abcde";

は、メモリ上のどこかに実際に存在する"abcde"の値のあるアドレスを、
ポインタ型変数、*str に代入しているのだと説明がありました。

では、"abcde" がメモリ上のどこにもなかったらどうなるんでしょう?
このプログラムは常に動くとは限らないんでしょうか?