引发了异常: 写入访问权限冲突。 store 是 0x1920111。请问如何解决?

问题遇到的现象和发生背景

引发了异常: 写入访问权限冲突。
store 是 0x1920111。

问题相关代码,请勿粘贴截图

void HuffmanTree::docode(huffcode& code, int n)
{

code = new char* [n + 1];
char* store = new char[n];
//零时存放编码
store[n - 1] = '\0';
int start, c, i, f;
for (i = 1; i <= n; i++)
{
    start = n - 1;
    c = i;
    f = huffTree[i].parent;
    while (f != 0)
    {
        --start;
        if (huffTree[f].lchild == c)
            store[start] = '0';
        else
            store[start] = '1';
        c = f; f = huffTree[f].parent;
    }
    code[i] = new char[n - start];
    code[i] = &store[start];
}
delete store;




fstream outFile("编码.txt", ios::out);
for (int i = 1; i <= n; i++)
{

    outFile << huffTree[i].ascii << " " << huffTree[i].weight << " ";//写入字符,权值 
    while (!code[i])

    {
        outFile << code[i];//写入编码 
    }outFile << endl;
}
outFile.close();

}

运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果

第8行

start = n - 1; 
store中一共n个字节,start-1就是最后一个char所在的位置,你的代码中使用的都是这个最后的char,store最后的\0被覆盖掉了
建议把char* store = new char[n];这里改成char* store = new char[n+1];
store[n - 1] = '\0'改成store[n] = '\0'

start = n - 1;这一句需不需要改成start = n - i; 根据你的需要来处理

start没有初始化啊
int start = 0;