で、普通に文字列リテラル "abc" を考えると
どこかに4byteの領域が確保されていると言い切れるはず。

だけど
static char x[3] = "abc";
の場合は、3byte分しか確保されていないわけだ。
(staticだから、auto変数と違ってコピーは起こらない)