c++如何复制独立的wstring到值类型为wstring的map中

class File
{
public:
    wstring directory;
    char sha256[32] = {};
};

int main()
{
    map<int, File*> AllFiles{};
    wstring directory_of_files[8192];
    char current_sha256[32];
//......有一大串代码,这里省略
    for (int j = 0; j < fileCount; j++)
    {
        AllFiles[j] = new File;
        GetHASH(SHA256, directory_of_files[j], current_sha256);
        AllFiles[j]->directory = directory_of_files[j]; //位置a
        strcpy(AllFiles[j]->sha256,current_sha256);  //位置b
    }
    return 0;
}

在位置a处报错:

引发了异常: 读取访问权限冲突。
this 是 0x8C19E29EC0。

在位置b处报错:

0x00007FFA824956A2 (ucrtbased.dll)处(位于 6 - Verify File Consistency.exe 中)引发的异常: 0xC0000005: 写入位置 0x0000000000000028 时发生访问冲突。


class File
{
public:
    wstring directory;
    char sha256[32] = {};
};

int main()
{
    File* AllFiles[8192];
    wstring directory_of_files[8192];
    char current_sha256[32];
//......有一大串代码,这里省略
    for (int j = 0; j < _min(fileCount,8192); j++)
    {
        AllFiles[j] = new File;
        assert(AllFiles[j]);
        GetHASH(SHA256, directory_of_files[j], current_sha256);
        AllFiles[j]->directory = directory_of_files[j]; //位置a
        strncpy(AllFiles[j]->sha256,current_sha256,32);  //位置b
    }
    return 0;
}