You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
------------------ 原始邮件 ------------------
发件人: ***@***.***>;
发送时间: 2024年3月6日(星期三) 下午2:26
收件人: ***@***.***>;
抄送: ***@***.***>; ***@***.***>;
主题: Re: [Alinshans/MyTinySTL] 关于deque容器析构函数中可能会导致内存泄漏的问题 (Issue #143)
对的 相信你自己的思考
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***>
上述为deque的析构函数,其内部调用了clear函数,但是clear函数内部只调用了
data_allocator::destroy
函数,此函数应该只复制元素析构函数的调用而不释放指针指向的内存。此外clear
函数内部也调用了shrink_to_fit()
函数,该函数只是将duque中两头额外的缓冲区内存释放,而内部已使用过的缓冲区并不会释放。析构函数最后只释放了begin_所在缓冲区指针指向的内存空间,这样begin之后的缓冲区(如果存在)将不会被释放,这应该会导致内存泄漏。下面附上相关函数的代码,其中有些注释是我自己写上去的。我认为正确的做法是在clear内部合适的位置加上
data_allocator::deallocate
函数的调用用于释放内存,这样才能在析构函数中实现正确的内存释放。以上仅是我个人的理解,如果理解有误还请指正。
The text was updated successfully, but these errors were encountered: