前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[C语言]内存泄漏问题Out Of Memory

[C语言]内存泄漏问题Out Of Memory

作者头像
唯一Chat
发布2021-03-09 16:50:14
8440
发布2021-03-09 16:50:14
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

看下面这段代码

代码语言:javascript
复制
void memory_leak() {
  int *p = (int *)malloc(sizeof(int));
  return;
}

上述代码在申请一段内存后直接返回,这样申请到的这块内存在代码中再也没有机会释放掉了,这就是内存泄漏。 内存泄漏是一类极为常见的问题,尤其对于不支持自动垃圾回收的语言来说,但并不是说自带垃圾回收的语言像 Java 等就不会有内存泄漏,这类语言同样会遇到内存泄漏问题。 有内存泄漏问题的程序会不断的申请内存,但不去释放,这会导致进程的堆区越来越大直到进程被操作系统 Kill 掉,在 Linux 系统中这就是有名的 OOM 机制,Out Of Memory Killer。

幸好,有专门的工具来检测内存泄漏出在了哪里,像valgrind、gperftools等。 内存泄漏是一个很有意思的问题,对于那些运行时间很短的程序来说,内存泄漏根本就不是事儿,因为对现代操作系统来说,进程退出后操作系统回收其所有内存,这就是意味着对于这类程序即使有内存泄漏也就是发生在短时间内,甚至你根本就察觉不出来。 但是对于服务器一类需要长时间运行的程序来说内存泄漏问题就比较严重了,内存泄漏将会影响系统性能最终导致进程被 OOM 杀掉,对于一些关键的程序来说,进程退出就意味着收入损失,特别是在节假日等重要节点出现内存泄漏的话,那么肯定又有一批程序员要被问责了。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-03-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档