这个问题与标题中的问题相同:是否可以在不使用任何内核特定方式(例如malloc,new等)的情况下产生内存泄漏?
如果我将在其中包含许多元素的函数内创建一个链表,然后在不清除列表的情况下退出该函数,该怎么办?该列表将在不使用任何malloc调用的情况下创建,即
struct list_head {
struct list_head *next, *prev;
}
是否可以保证退出此功能后将释放所有资源?因此,我可以自由执行一百万次,而不会泄漏任何内容?
主题:如果不使用任何特定的malloc或新调用,则不会发生堆内存泄漏。决不。那正确吗?
一个泄漏始终连接到一个资源。根据定义,资源是您手动获取的,并且必须手动释放的。内存是一个很好的例子,但是还有其他资源(文件句柄,互斥锁,网络连接等)。
当您获取资源时发生泄漏,但随后丢失了该资源的句柄,因此没有人可以释放它。一个鲜为人知的版本泄漏的是一个“仍可达的”那种情况下,你不释放资源,但你仍然有把手,可将其释放。这主要是由于懒惰,但相比之下,泄漏始终是编程错误。
由于您的代码从不获取任何资源,因此也不会有任何泄漏。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句