下面的一些用到的东西, 在我的博客里都能找到
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "chain_queue.h"
#include "binary_tree.h"
#include "dynamic_stack.h"
#include "single_linked_list.h"
int main(int argc, char *argv[])
{
tree *root = NULL;
tree *t;
create_tree(&root);//4 2 1 -1 -1 3 -1 -1 6 5 -1 -1 7 -1 -1
tree_insert(&root, 0);
tree_insert(&root, -1);
in_order_traversal (root);
return 0;
}
输出结果说明有问题, 不知道为什么…wonder…
这个问题记录一下
经过我使用GDB调试器, 发现malloc 函数似乎有问题…我的天哪…
下面的是树节点所在的地址
display ((tree *) 0x555555758810)->data --> 1
display ((tree *) 0x5555557587d0)->data --> 2
display ((tree *) 0x5555557586b0)->data --> 3
display ((tree *) 0x555555758690)->data --> 4
display ((tree *) 0x555555758710)->data --> 5
display ((tree *) 0x555555758260)->data --> 6
display ((tree *) 0x555555758790)->data --> 7
display ((tree *) 0x555555758770)->data --> 0
display ((tree *) 0x5555557587f0)->data --> -1
然而, 我打印了in_order_traversal()函数的返回值create_stack(), s->arr 的地址时, 发现
&s->arr[8]的地址与 数值为-1的节点的地址是一样的, 都是 0x5555557587f0…
所以我怀疑 malloc函数出问题了, 但是这个问题怎么调试验证呢…
下一步是对malloc 与 calloc 函数的源码进行分析解读
418




被折叠的 条评论
为什么被折叠?



