C++ malloc/memcpy/free崩溃

 玫瑰花开-内蒙_238 发布于 2023-02-11 08:11

我真的遇到了这个C++错误:

    template
    void Shift(T* Data, const ulong& Length, long Offset) const
    {
        if((!Data) || (!Length))
            return;

        if(Offset < 0)
            Offset = (Length-1) - ((-Offset-1) % Length);
        else
            Offset %= Length;

        if(!Offset)
            return;

        int TSize = sizeof(T);

        T* Shifter = new T[Length];

        if(Shifter)
        {
            memcpy(Shifter, Data + TSize * Offset, TSize * (Length - Offset));
            memcpy(Shifter + TSize * (Length - Offset), Data, TSize * Offset); //fails
            memcpy(Data, Shifter, TSize * Length);

            delete[] Shifter;
        }
    }

嗯,失败的是:

77CD0575 ntdll!TpWaitForAlpcCompletion()(C:\ Windows\system32 \ntdll.dll:??)

0028D640 ?? ()(??:??)

77CB57C2 ntdll!RtlLargeIntegerDivide()(C:\ Windows\system32 \ntdll.dll:??)

003E1030 ?? ()(??:??)

77C92A8A ntdll!RtlCopyExtendedContext()(C:\ Windows\system32 \ntdll.dll:??)

?? ?? ()(??:??)

T是短字节,顺便说一句.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有