【发布时间】:2015-05-16 07:36:43
【问题描述】:
我试图弄清楚如何将大量数字插入二叉树。 该程序首先询问一个数字,然后在用户输入的任何数字中插入 0。我的程序可以工作,但它开始在 40,000 左右崩溃,出现错误: 进程返回-1073741571(0XC00000FD)
我是 C 和内存管理的新手,但我相信问题出在那儿。有什么建议吗?
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct node BSTREE;
struct node
{
int data;
struct node * left;
struct node * right;
};
void insert(BSTREE ** root, int number);
int main()
{
BSTREE *root = malloc(sizeof *root);
BSTREE *tmp = malloc(sizeof *root);
root = NULL;
int x;
int input;
FILE *fp;
fp=fopen("c:\\test2.txt", "w");
printf( "Please enter a number: " );
scanf( "%d", &input );
for ( x = 0; x < input; x++ )
{
insert(&root, x);
}
printf("%d", x);
free(root);
fclose(fp);
}
void insert(BSTREE ** root, long int number)
{
BSTREE *temp = NULL;
if(!(*root))
{
temp = (BSTREE *)malloc(sizeof(BSTREE));
temp->left = temp->right = NULL;
temp->data = number;
*root = temp;
return;
}
if(number < (*root)->data)
{
insert(&(*root)->left, number);
free(root);
}
else if(number > (*root)->data)
{
insert(&(*root)->right, number);
free(root);
}
free(root);
}
【问题讨论】:
-
free(root);insert??并且可能堆栈溢出。 -
long int number-->int number,BSTREE *root = malloc(sizeof *root); BSTREE *tmp = malloc(sizeof *root); root = NULL;内存泄漏。
标签: c loops memory memory-management out-of-memory