特に、以下は明確に定義されていますか、それとも未定義の動作を示していますか?
未定義です。C99 7.21.1/2 は、すべての文字列関数について次のように述べています。
この副次節の特定の関数の説明で特に明記されていない限り、そのような呼び出しのポインター引数は引き続き有効な値を持つものとします。
また、7.21.4.1の説明ではmemcmp
、明示的に別のことを述べていません。
これは C と C++ で異なりますか?
いいえ、C++ は C ライブラリ関数の定義を C に委ねており、memcmp
.