为何字符窜能超额容纳输入信息不报错

为什么字符窜能超额容纳输入信息不报错?
程序如下:
#include<iostream>
#include<string>
using namespace std;
class T
{
public:
T()
{a=0;
s=new char[10];
gets(s);
}
Print()
{cout<<a<<','<<s<<endl;}
private:
int a;
char *s;
};
void main()
{
T x;
x.Print();
}
运行结果:


------解决方案--------------------
gets本身就是个不安全的函数,直到换行符号才结束,而你的数组满足不了输入的数据,系统会给你在静态分配的地址后面给定它存储空间存放数据。所以你的输出是你刚的全部输入,最好是在后面控制好字符数量,保证安全。
------解决方案--------------------
C/C++是不检查边界的,留给程序员自己做

虽然能暂时得出结果,无疑是个留了个炸弹