我已经调试了几个小时的内存泄漏问题,结果发现程序中有循环引用。
网上提供的解决方法是将shared_ptr
转换成weak_ptr
,但是这个任务中要求我们使用shared_ptr
。
基本上,这个程序是一个文件系统。就像当你输入cd .
时,你会进入当前的地址。
currentAddress
是一个指向当前地址的inode_ptr
。directory
被定义为map<string, inode_ptr<node>>
,其中directory.first
是文件名/目录名,如.
、..
或fileA
,而directory.second
是一个inode_ptr
,与currentAddress
相同。
所以我想要做的就是将pair<".", currentAddress>
放入directory
中。
并且currentAddress
也应该指向directory
在不使用weak_ptr
的情况下,如何避免这种情况下的内存泄漏?谢谢!
{".", currentAddress}
吗?因为它总是被隐含了。 - GalikcurrentAddress
和directory
是在两个不同的类中,并且它们是私有的。 - Kevin217.
和..
有特殊情况)吗?或者同一个inode
可以出现在两个不同的目录中吗? - Galikdirectory
是一个映射,或者你可以称之为一个 map。directory.second
是一个指向file
类或directory
类的 shared_ptr。但在这种情况下,内存泄漏发生在.
处。 - Kevin217