双重链接结构列表的内存泄漏

时间:2017-03-07 14:49:05

标签: c++ linux struct memory-leaks doubly-linked-list

我正在使用C ++在ubuntu 16.04 linux中处理文件爬虫。

文件抓取工具是我对书中context->setContextProperty("rootEntity", _rootEntity);的问题的解决方案,其内容如下:

  

编写一个从给定目录开始的程序,并从中下载文件树   点记录它找到的所有文件的大小。完成后,它应该打印一个   使用指定为参数的bin宽度的文件大小的直方图(例如,1024,   文件大小为0到1023进入一个bin,1024到2047进入下一个bin等。)

它将exename,目录和bin大小作为参数,并通过将文件添加到存储为双重链接列表的bin的目录进行爬网。

例如,如果Modern Operating Systems by Andrew Tanenbaum 4th edition为10,则在Bin 0中存储字节大小为0-9的文件,如果找到大小为10或更大的文件,则会生成大小为10-18的新节点并将其存储在那里并将其标记为Bin 1.
如果我有一个嵌套在另一个目录中的目录,我需要打开它以递归遍历文件,我的问题就出现了。我有一个函数binWidth or (argv[2]),它旨在通过递归方式找到它们。

我相信这个bug在我的拷贝构造函数中。

我的代码如下:

traverseNewDirectory

最后编辑

我非常感谢Igor,J.H,Toby和其他所有评论过如何处理链表的人。我的代码现在完全解决了这个问题。我能够通过简化从双链接结构列表到单链接结构列表的方法来实现它,只需几个指针而没有复制构造函数。即使所有的答案,建议和提示都没有给我一个直接的答案,它激发了我的创造力,通过坚持不懈和研究,我能够解决它。为此,我要感谢所有花时间查看我的帖子的人。

1 个答案:

答案 0 :(得分:1)

对于复制构造函数,您可能需要这样的东西:

traverseNewDirectory

虽然目前尚不清楚您是否想要任何形式的副本或伪副本构造函数。 current->next = traverseNewDirectory(...); 调用应该如下所示:

new node

(放下 SELECT COUNT(model) cnt, model, loc_name, vehicle_type FROM vehicles GROUP BY model, loc_name, vehicle_type 部分)。