e434.c

文字列に\0が入りません

/* A:e434: \0を入れる隙間が配列 char [4] にないので、文字列として使用できません "abcd" */

修正前 char str[4] = "abcd";
修正後 char str[5] = "abcd"; もしくは char str[] = "abcd";

解説 文字バイト数分ぎりぎりの文字列で配列を初期化すると、 文字列の末尾に\0が入りらず、文字列としては使えない配列になります。 この配列をstrcpy等文字列操作関数に渡すと文字列終端を示す\0がが無いため、 メモリ破壊が起きます。