注册 登录
编程论坛 C++教室

各位大佬们,小弟有个字典树里指针调用的问题望赐教!

anmi夏轩 发布于 2020-12-16 18:28, 1451 次点击
关于字典树的一个疑问,为什么总是在p->child[pos]=NULL上报错读取访问权限冲突?

void insert_I(TrieTreeNode* p, const string& word)
    {
        for (int i = 0; i < word.length(); ++i)
        {
            int pos = word[i] - 'a';
            if (p->child[pos] == NULL)
            {
                p->child[pos] = new TrieTreeNode();
                p->child[pos]->ch = word[i];
                p->child[pos]->parent = p;
            }
            p->child[pos]->PrefixCount++;
            p = p->child[pos];
        }
        p->WordCount++;
    }
4 回复
#2
rjsp2020-12-16 20:19
你在 if (p->child[pos] == NULL) 这一句上设个断点,调试
看 p 是否合法
看 p->child 是否合法
看 pos 是否在有效范围内,也就是 p->child[pos] 是否合法
#3
anmi夏轩2020-12-16 20:41
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

从单词“once”的第二个字母出现问题了,不懂是什么原因。
#4
rjsp2020-12-16 21:27
那你只能一步一步的调试,看看为什么 p->child 没有赋值,或赋值后为什么又被改为了NULL
#5
anmi夏轩2020-12-17 01:38
感谢🙏,问题已经解决了。
是我分配的内存不够
1