我正在尝试编写一段代码来将向量转换为树,但是我得到了一个错误:
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 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;
}发布于 2021-11-30 11:00:28
这主要发生在这段代码中,因为您没有正确初始化节点的左指针和右指针。它们被设置为NULL,但不应该发生这种情况。应该为它们分配内存,使用
new TreeNode() 其中存储器中的值被初始化为NULL。
应该是这样的
TreeNode(){
left = NULL;
right = NULL;
}
TreeNode(int l,int r){
e= r;
s = l;
left = new treenode();
right = new treenode();
}https://stackoverflow.com/questions/62969523
复制相似问题