C语言崩溃问题,为什么会这样,如何解决

来源:百度知道 编辑:UC知道 时间:2024/09/25 12:04:26
#include <stdio.h>
#include <malloc.h>
typedef struct{
TNode* left;
TNode* right;
int value;
} TNode;
TNode* root=NULL;
void append(int N);
int main()
{
append(63);
append(45);
append(32);
append(77);
append(96);
append(21);
append(17); // Again, 数字任意给出
}
void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode->value=N;

if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;

while((N>=temp.value && temp.left!=NULL) || (N<temp. value && temp. right
!=NULL
))
{
while(N>=temp.value && temp.left!=NULL)
temp=temp.left;
while(N<temp.value && temp.right!=NULL)
te

append(32); 的时候,while((N>=temp.value && temp.left!=NULL) || (N<temp. value && temp. right
!=NULL
))
不满足,执行temp.right=NewNode; 那么原来的就被right覆盖了

malloc以后没有Free掉。如果不free的话内存不会自己释放。