Mik*_*kov 4 c c++ memory memory-leaks memory-management
这个问题如标题所示:是否有可能在不使用任何内核特定方法(如malloc,new等)的情况下产生内存泄漏?
如果我在一个包含很多元素的函数内部创建一个链表怎么办,之后我会退出这个函数而不清理列表.该列表将在不使用任何malloc调用的情况下创建,即
struct list_head {
struct list_head *next, *prev;
}
Run Code Online (Sandbox Code Playgroud)
可以保证在退出此功能后将释放所有资源吗?所以我可以自由地执行它一百万次,什么都不会被泄露?
主题:如果您不使用任何特定的malloc或新调用,则不会出现堆内存泄漏.决不.是对的吗?
Ker*_* SB 12
一个泄漏始终连接到一个资源.根据定义,资源是您手动获取的,并且您必须手动释放.内存是一个很好的例子,但也有其他资源(文件句柄,互斥锁,网络连接等).
获取资源时会发生泄漏,但随后会丢失资源的句柄,以便没有人可以释放它.泄漏的较小版本是"仍然可达"的情况,您不释放资源,但您仍然拥有句柄并可以释放它.这主要是懒惰,但相反的泄漏总是一个编程错误.
由于您的代码从不获取任何资源,因此它也不会有任何泄漏.
| 归档时间: |
|
| 查看次数: |
3454 次 |
| 最近记录: |