次のプログラムを実行します。
#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!"。未定義の動作に入っていますか?