c语言 - 为什么 malloc 在我自己的 BST 树实现中不起作用



这是节点定义:

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上写入)。为什么会这样?

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

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

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

相关内容

  • 没有找到相关文章

最新更新