首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试创建树时,未对齐的地址中的成员访问

尝试创建树时,未对齐的地址中的成员访问
EN

Stack Overflow用户
提问于 2020-07-18 22:09:15
回答 1查看 680关注 0票数 0

我正在尝试编写一段代码来将向量转换为树,但是我得到了一个错误:

代码语言:javascript
复制
Line 51: Char 27: runtime error: member access within misaligned address 0xbebebebebebebebe for type 'TreeNode', which requires 8 byte alignment (solution.cpp)
0xbebebebebebebebe: note: pointer points here
<memory cannot be printed>
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:56:27   
代码语言:javascript
复制
TreeNode* deserialize(vector<string> v) {
        int i=0;
        TreeNode* root = new TreeNode(stoi(v[i]));
        queue<TreeNode*> q;
        q.push(root);
        v.erase(v.begin());
        while(v.size()>0)
        {
        if(v[0]==",")
        {
            q.front()->left=NULL;
            q.pop();
            v.erase(v.begin());
        }
        else
        {
         //  TreeNode* root2 = new TreeNode(stoi(v[0]));
           q.front()->left->val=stoi(v[0]);
            q.push( q.front()->left);
            q.pop();
            v.erase(v.begin());
        }
   
   return root;
}
EN

回答 1

Stack Overflow用户

发布于 2021-11-30 11:00:28

这主要发生在这段代码中,因为您没有正确初始化节点的左指针和右指针。它们被设置为NULL,但不应该发生这种情况。应该为它们分配内存,使用

代码语言:javascript
复制
new TreeNode() 

其中存储器中的值被初始化为NULL。

应该是这样的

代码语言:javascript
复制
        TreeNode(){
            left = NULL;
            right = NULL;
        }
        TreeNode(int l,int r){
            e= r;
            s = l;
            left = new treenode();
            right = new treenode();
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62969523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档