分段错误和指向非现有结构的指针不为空

时间:2016-07-14 18:50:23

标签: c pointers struct

我有以下结构:

<%@ page contentType="text/xml" %>
<%@page pageEncoding="UTF-8"%>
<%@ page trimDirectiveWhitespaces="true"%>

用这棵树:

my tree

问题: mytree-&gt; left-&gt; left-&gt; left为NOT NULL。但为什么?!如何检查我是否到达分支的末尾?

typedef struct treeNode *tree;
typedef struct treeNode {
  int key; 
  tree left, right;
} treeNode;

1 个答案:

答案 0 :(得分:5)

分配treeNode时,是否将指针初始化为NULL? C不会神奇地初始化动态分配的内存。

您添加了初始化代码。 malloc()不会将内存的内容初始化为零。您的代码中没有任何内容可以将leftright指针设置为NULL。这就是为什么他们不是NULL的原因。您可以手动初始化它们(最适合您),也可以使用calloc()代替malloc()calloc()将分配的内存初始化为零。