次のプログラムを実行します。
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char a[8] = "Hello, ";
char b[7] = "world!";
strcat(a, b);
cout << a;
return 0;
}
a
とb
は、割り当てられた文字列と同じサイズであることに注意してください。
ドキュメントには、 forstrcat(a, b)
が機能a
するには、連結された結果の文字列を含めるのに十分な大きさが必要であると記載されています。
それにもかかわらず、cout << a
表示されます"Hello, world!"
。未定義の動作に入っていますか?