关于#vs#的问题,如何解决?(关键词-缓冲区溢出)

vs显示写入Sub.ch时缓冲区溢出

//1.3求字串的功能的实现
int SubString(HString& Sub, HString S, int pos, int len)//求字串
{
    int n;    
    if (pos<0 || pos>S.length || len<0 || len>S.length - pos + 1)//出现错误的地方
    {
        return 0;
    }
    // if(Sub.ch) free(Sub.ch);
    if (!len)
    {
        Sub.ch = NULL;
        Sub.length = 0;
    }
    else
    {
        Sub.ch = (char*)malloc(len * sizeof(char));
        if (Sub.ch==NULL)
        {
            return -1;
        }
        for (n = 0; n <= len-1; n++)
        {
            Sub.ch[n] = S.ch[pos + n - 1];
        }
        Sub.length = len;
    }
    return 1;
}

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇博客: 缓冲区保护机制中的 VS编译器测试 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

看看传进来的参数,len是多少,数组越界了。