为什么malloc不能在我自己的BST树实现中工作

时间:2012-01-06 06:54:00

标签: c algorithm malloc binary-search-tree

这是节点定义:

typedef struct drzewo BST;
struct drzewo  {
   int key;
   BST *left;
   BST *right;
   BST *p;
};

我正在尝试编写添加功能:

BST *add(  BST *root, int val)
{
   BST  *x = root;
   BST *nowe =(BST*)malloc(sizeof(BST));


   nowe->key = val;
   nowe->left=nowe->right=nowe->p=NULL;
   ...
}

但似乎malloc导致分段错误,当root = NULL或其他错误(在Windows上写入)。为什么会这样?

2 个答案:

答案 0 :(得分:1)

我怀疑在...内你有x->leftx->right的分配(或从中读取),以便于将新分配的节点链接到树中。如果root为NULL,则应该失败。

答案 1 :(得分:0)

使用valgrind(如果您的系统是Linux)或调试器来调试您的问题。

学习使用调试器(例如Linux上的gdb)。