[@more@]
本来在测试一个我写的list结构及一些操作接口。增加或删除结点的测试完成之后,加入别的测试。结果出错。用gdb监视,发现出错原因竟是由于malloc得到的两块地址是同一个。我把测试程序改来改去,头都胀大了好几倍,感觉自己都快疯了--觉得自己没有用错什么语句,两个malloc居然会给我同一个地址,受了莫名的委屈。
我突然问自己:一直在跟free/malloc较劲,我原来倒底是干什么来的?我努力想了好一会儿,才记起来我是在测试我的list,不是来玩free/malloc的。稍冷静了一点。后来通过修改代码和gdb发现是我封装free的一个wrapper函数似乎有问题。我注释掉main()中调用这个函数的语句,最后运行正常。后来我检查那个出错的函数,原因是一个指针free了两次--其实我原来发现过这个问题,而且也改了,不知道为什么没有存下来;可能原因是我的cvs用的也比较混乱。
不管怎么说,free/malloc真是危险的坐骑啊,驾驭不利,非摔得鼻青脸肿不可。
--------------------next---------------------
阅读(732) | 评论(0) | 转发(0) |