1、问题描述
递归构造树成功,之后遍历该树时,某个节点的子节点被离奇置空(children数组中的自定义对象元素被置空),从而发生段错误(Segmentation fault)。
2、解决方案
刚开始以为是递归逻辑问题,但久久定位仍无收获。
后通过valgrind工具检查内存,发现一处错误(Invalid write of size 1),valgrind提示了出现该错误的函数的名字。检查该函数,发现对动态数组赋值时发生越界。
解决越界问题后,程序运行成功!
3、总结反思
写完C++程序后,使用工具(如valgrind)检查内存,能避免很多看上去很奇怪的问题。