mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-18 03:51:35 +08:00
内存溢出真的很可怕,10秒左右直接给我电脑卡崩了。16G内存,以肉眼可见的速率直冲100%
This commit is contained in:
parent
c9a971971a
commit
bfc6e88bb9
28
src/tree.c
28
src/tree.c
@ -1483,22 +1483,12 @@ void* tree_begin(struct _tree* self)
|
||||
case ORDER_LEFT_PRE:
|
||||
{
|
||||
struct _tree_node* node = NULL;
|
||||
|
||||
self->cur_node = self->_root;
|
||||
if(!self->stack->empty(self->stack) || self->cur_node != NULL)
|
||||
{
|
||||
if(self->cur_node != NULL)
|
||||
{
|
||||
node = self->cur_node;
|
||||
self->stack->push(self->stack, &self->cur_node);
|
||||
}
|
||||
else
|
||||
{
|
||||
self->stack->pop(self->stack, &self->cur_node);
|
||||
self->cur_node = self->cur_node->right;
|
||||
}
|
||||
}
|
||||
return node;
|
||||
|
||||
self->stack->clear(self->stack);
|
||||
node = self->cur_node;
|
||||
self->stack->push(self->stack, &self->cur_node);
|
||||
return node->obj;
|
||||
}break;
|
||||
case ORDER_LEFT_IN:
|
||||
{
|
||||
@ -1542,7 +1532,7 @@ void* tree_next(struct _tree* self)
|
||||
case ORDER_LEFT_PRE:
|
||||
{
|
||||
struct _tree_node* node = NULL;
|
||||
if(!self->stack->empty(self->stack) || self->cur_node != NULL)
|
||||
while(!self->stack->empty(self->stack) || self->cur_node != NULL)
|
||||
{
|
||||
if(self->cur_node != NULL)
|
||||
{
|
||||
@ -1555,7 +1545,7 @@ void* tree_next(struct _tree* self)
|
||||
self->cur_node = self->cur_node->right;
|
||||
}
|
||||
}
|
||||
return node;
|
||||
return node->obj;
|
||||
}break;
|
||||
case ORDER_LEFT_IN:
|
||||
{
|
||||
@ -1598,8 +1588,7 @@ void* tree_end(struct _tree* self)
|
||||
{
|
||||
case ORDER_LEFT_PRE:
|
||||
{
|
||||
struct _tree_node* node = NULL;
|
||||
return node;
|
||||
return NULL;
|
||||
}break;
|
||||
case ORDER_LEFT_IN:
|
||||
{
|
||||
@ -1647,6 +1636,7 @@ bool tree_avl_init(struct _tree *self, uint32_t obj_size)
|
||||
// self->_ratio = 2;
|
||||
|
||||
self->_right_priority = false;
|
||||
self->_order = ORDER_PRE;
|
||||
|
||||
self->insert = tree_avl_insert;
|
||||
self->delete = tree_avl_delete;
|
||||
|
@ -467,10 +467,10 @@ void test_rbtree_struct(void)
|
||||
static void test_tree_iter(void)
|
||||
{
|
||||
uint32_t i = 0;
|
||||
// int data[] = { 2,1,3,4};
|
||||
int data[] = { 2,1,3,4};
|
||||
// int data[] = { 1,2,3,4,5,6};
|
||||
// int data[] = { 5,2,3,1,7,8,6 };
|
||||
int data[] = { 5,2,3,1,7,8,6,4,9,10,12,11,15,14,13 };
|
||||
// int data[] = { 5,2,3,1,7,8,6,4,9,10,12,11,15,14,13 };
|
||||
int buff[32];
|
||||
int count = 0;
|
||||
int temp = 0;
|
||||
@ -493,10 +493,11 @@ static void test_tree_iter(void)
|
||||
// printf("\n");
|
||||
}
|
||||
|
||||
printf("\niter test\n");
|
||||
int * iter = NULL;
|
||||
for(iter = tree->begin(tree); iter != tree->end(tree); iter = tree->next(tree))
|
||||
{
|
||||
printf("%d ", *iter);
|
||||
printf("%d \n", *iter);
|
||||
|
||||
buff[count++] = *iter;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user