vc 中用strcpy函数遇到的问题

小弟我在做strcpy函数的测试,代码如下
char pContent[20];
CString str = "qwertyuiopasdfghjklzxcvbnm1312311111111111111111111111111111111111111111111111111";
strcpy(pContent,str);
AfxMessageBox(pContent);

我很疑问,问啥我定义了长度给20的数组,str的长度明显是大于20的,为啥程序不会报错呢?编译环境为VC6.0。
请大神们解答一下

因为strcpy不会对缓冲区是否越界做出检查。所以这样的代码照样可以编译运行,但是显然结果不可预料。
特别指出,strcpy不应该使用,应该用strncpy和strcpy_s代替。

 char * strcpy(char *dst,const char *src)   //[1]
{
    assert(dst != NULL && src != NULL);    //[2]

    char *ret = dst;  //[3]

    while ((*dst++=*src++)!='\0'); //[4]

    return ret;
}

strcpy的代码:
从实现代码上看, strcpy不会对缓冲区是否做越界处理, 在while ((*dst++=*src++)!='\0') 中是根据src的值来结束while循环, 并不去
检查src的长度大于dst的长度

拷贝的字符串没有结束标志