内存溢出真的很可怕,10秒左右直接给我电脑卡崩了。16G内存,以肉眼可见的速率直冲100%

This commit is contained in:
建峰 2024-09-02 02:15:17 +08:00
parent c9a971971a
commit bfc6e88bb9
2 changed files with 13 additions and 22 deletions

View File

@ -1483,22 +1483,12 @@ void* tree_begin(struct _tree* self)
case ORDER_LEFT_PRE: case ORDER_LEFT_PRE:
{ {
struct _tree_node* node = NULL; struct _tree_node* node = NULL;
self->cur_node = self->_root; self->cur_node = self->_root;
if(!self->stack->empty(self->stack) || self->cur_node != NULL)
{ self->stack->clear(self->stack);
if(self->cur_node != NULL) node = self->cur_node;
{ self->stack->push(self->stack, &self->cur_node);
node = self->cur_node; return node->obj;
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;
}break; }break;
case ORDER_LEFT_IN: case ORDER_LEFT_IN:
{ {
@ -1542,7 +1532,7 @@ void* tree_next(struct _tree* self)
case ORDER_LEFT_PRE: case ORDER_LEFT_PRE:
{ {
struct _tree_node* node = NULL; 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) if(self->cur_node != NULL)
{ {
@ -1555,7 +1545,7 @@ void* tree_next(struct _tree* self)
self->cur_node = self->cur_node->right; self->cur_node = self->cur_node->right;
} }
} }
return node; return node->obj;
}break; }break;
case ORDER_LEFT_IN: case ORDER_LEFT_IN:
{ {
@ -1598,8 +1588,7 @@ void* tree_end(struct _tree* self)
{ {
case ORDER_LEFT_PRE: case ORDER_LEFT_PRE:
{ {
struct _tree_node* node = NULL; return NULL;
return node;
}break; }break;
case ORDER_LEFT_IN: case ORDER_LEFT_IN:
{ {
@ -1647,6 +1636,7 @@ bool tree_avl_init(struct _tree *self, uint32_t obj_size)
// self->_ratio = 2; // self->_ratio = 2;
self->_right_priority = false; self->_right_priority = false;
self->_order = ORDER_PRE;
self->insert = tree_avl_insert; self->insert = tree_avl_insert;
self->delete = tree_avl_delete; self->delete = tree_avl_delete;

View File

@ -467,10 +467,10 @@ void test_rbtree_struct(void)
static void test_tree_iter(void) static void test_tree_iter(void)
{ {
uint32_t i = 0; 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[] = { 1,2,3,4,5,6};
// int data[] = { 5,2,3,1,7,8,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 buff[32];
int count = 0; int count = 0;
int temp = 0; int temp = 0;
@ -493,10 +493,11 @@ static void test_tree_iter(void)
// printf("\n"); // printf("\n");
} }
printf("\niter test\n");
int * iter = NULL; int * iter = NULL;
for(iter = tree->begin(tree); iter != tree->end(tree); iter = tree->next(tree)) for(iter = tree->begin(tree); iter != tree->end(tree); iter = tree->next(tree))
{ {
printf("%d ", *iter); printf("%d \n", *iter);
buff[count++] = *iter; buff[count++] = *iter;
} }