事情是这样的,最近想用C语言实现一些数据结构,今天在写二叉树时在linux下使用gcc编码是没有任何问题的,然而当我在本地window使用clion编写时,同样的代码竟然不能用了,反复看了下代码没有任何问题,然后我把代码拷贝到linux中用gcc编译执行竟然是好的,是能正常执行的
问题说明
接下来说说我的问题
通过 Tree_create() 返回了一个Tree结构体的指针,然后通过add()方法添加元素,然而这段执行完后没有任何输出,也就是有问题的,我反复确认了我的添加逻辑,确认没有问题
发现问题
接着进行debug调式
那段代码是判断如果当前这棵树有根节点那么就要把数据添加到合适的位置,如果没有根节点,那么第一个数据就作为根节点,我们的第一个数据是 55 也就是这时候 55 应该作为根节点, 但是最重要的来了, 根节点竟然指向了一个未知地址, 所以导致我们的判断不成立,问题就出现在这,使用malloc分配的内存是不会把内存初始化为0值的,但是在linux上使用gcc编译是能正常执行的。
解决问题
解决这个问题的方法也很简单,使用calloc分配内存就好了,calloc会把内存初始化为0值
改成calloc之后就能正常执行了