gpt4 book ai didi

c++ - 为什么将 'char' 分配给 'char' 会产生段错误? C++

转载 作者:行者123 更新时间:2023-11-30 01:44:23 25 4
gpt4 key购买 nike

我有一个看起来像这样的类:

class myTreeNode
{
public:
char Data;
myTreeNode *childA = NULL; //A's always go in child1
myTreeNode *childT = NULL; //T's always go in child2
myTreeNode *childC = NULL; //c's always go in child3
myTreeNode *childG = NULL; //G's always go in child4
};

但是,当我为 Data 分配一个值时,我收到了一个段错误。我这样做是这样的:

root->childT->Data = p_data;

其中 p_data 是一个 char = troot 是由 myTreeNode *root = new myTreeNode 创建的指针;。为什么在为 Data 赋值时会出现段错误?这不就和做 char Data = 't' 一样吗?

最佳答案

您的 child 没有指向任何内存位置。您只为根节点创建了一个新实例。您遇到了段错误,因为您正在取消引用空指针。

例如:

class myTreeNode
{
public:
char Data;
myTreeNode *childA = NULL; //A's always go in child1
myTreeNode *childT = NULL; //T's always go in child2
myTreeNode *childC = NULL; //c's always go in child3
myTreeNode *childG = NULL; //G's always go in child4
};

int main()
{
// allocate memory
myTreeNode *root = new myTreeNode;
root->childT = new myTreeNode; // allocate child

root->childT->Data = 'a';

// delete allocated memory
delete root->childT;
delete root;
return 0;
}

关于c++ - 为什么将 'char' 分配给 'char' 会产生段错误? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36313760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com