MyException - 我的异常网
当前位置:我的异常网» C++ » 小弟我就分配了这么点空间,为什么能够装修strS这么

小弟我就分配了这么点空间,为什么能够装修strS这么多的char字符

www.MyException.Cn  网友分享于:2013-02-19  浏览:0次
我就分配了这么点空间,为什么能够装修strS这么多的char字符?


#include <iostream>

using std::cout;
using std::endl;

char* strcpy1(char* strDest, const char* strSrc)
{
    int i = 0;
    if((strDest == NULL)||(strSrc == NULL))
    {
        throw "Invalid argument";
    }
    char *strReturn = strDest;
    while((*strDest++ = *strSrc++) != '\0');

    return strReturn;
}

int main()
{
    char* strD = new char[5];//这里,我就分配了这么点空间,为什么能够装修strS这么多的char字符?
    const char* strS = "Let the skyfall,when it crumbles.";

    char* result = strcpy1(strD,strS);
   
    cout<<"The result is: "<< result <<endl;
}
输出的结果没问题,请大侠讲一讲?

------解决方案--------------------
越界了,可能会崩溃,也可能不崩溃.
------解决方案--------------------
strcpy1函数没传长度,也没有进行长度判断,越界了写入后面的连续内存中去了
越界了,可能会发生未知异常,也可能暂时不会报错,但是很危险

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有