gpt4 book ai didi

c - 为结构内的结构分配内存

转载 作者:行者123 更新时间:2023-11-30 16:48:04 25 4
gpt4 key购买 nike

我正在尝试为代码分配内存,其中我只包含实际程序的摘录,如下所示,我遇到的问题是我不知道如何为类型分配内存位于 BStree_node 内的键,当我尝试为键内的变量赋值时,这会导致段错误的问题。

typedef int Data_Item;
typedef char* Sub_Key;
typedef struct {Sub_Key key1; Sub_Key key2;} Key;



struct BStree_node{
Key key;
Data_Item data;
struct BStree_node *left, *right;
}
typedef struct BStree_node BStree_node;
typedef BStree_node** BStree;

BStree bs_tree_ini(void){
BStree tempTreePointer;
tempTreePointer = malloc(sizeof(BStree_node*));

BStree_node *tempNode;
tempNode = malloc(sizeof(BStree_node));
tempNode = NULL;

tempTreePointer = &tempNode;

return tempTreePointer;

}

最佳答案

您可以像这样初始化节点,使用 calloc 将内存清零以正确初始化所有字段:

BStree_node *init_node()
{
BStree_node *rval = calloc(1,sizeof(BStree_node)); // so all data & pointers are zeroed
return rval;
}

像这样使用它:init main,只剩下。右侧保持为零:该主节点没有右侧节点。

int main()
{
BStree_node *head = init_node();
head->left = init_node();
...

return 0;
}

关于c - 为结构内的结构分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43125158/

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