代码之家  ›  专栏  ›  技术社区  ›  nikitablack

内存泄漏可能是分段错误的原因吗?

  •  0
  • nikitablack  · 技术社区  · 4 年前

    我有一个复杂的应用程序,有很多第三方库,动态加载的插件。有些东西会导致应用程序崩溃( SIGSEGV )在主要出口之后。调用堆栈指向未知地址,因此我不仅无法调试,甚至不知道崩溃发生在哪里。

    我试图用 Valgrind -它显示了泄漏(一些千字节),但我相信它们是误报和/或我对此无能为力,因为它们来自第三方。

    我的问题是:我相信内存泄漏不会导致分段错误,至少我无法找出可能的情况。但由于我不确定我是否想听到泄漏会破坏程序的情况(假设我只是内存不足,这不是疯狂的泄漏)。

    0 回复  |  直到 4 年前
        1
  •  4
  •   SergeyA    4 年前

    不,内存泄漏本身不会导致分段错误。然而,内存泄漏通常表明代码草率,在草率的代码中,可能会出现其他问题,从而导致分段错误。

        2
  •  0
  •   debruss    4 年前

    不,分段错误本身并不比试图访问不允许访问的内存块多多少。另一方面,内存泄漏是指您分配了一些内存,后来“忘记”了内存块的位置。存储的数据仍然存在,但无法再从该程序实例访问。

    这两种错误/故障几乎总是因为草率的编码实践而发生。因此,导致内存泄漏的草率编码也可能是分段错误的原因。