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

Can a memory leak be a reason of a segmentation fault?

我有一个复杂的应用程序,其中包含许多第三方库和动态加载的插件。在 main 退出后,某些原因导致应用程序崩溃 (SIGSEGV)。调用堆栈指向未知地址,所以我不仅无法调试,甚至不知道崩溃发生的位置。

我尝试 运行 使用 Valgrind 的应用程序 - 它显示泄漏(几千字节),但我认为它们是误报 and/or 我无能为力因为他们来自第三方。

我的问题:我认为内存泄漏不会导致段错误,至少我找不到可能的情况。但是因为我不确定我是否愿意听到泄漏会破坏程序的情况(假设当我只是内存不足时这不是疯狂的泄漏)。

不,内存泄漏本身不会导致分段错误。但是,内存泄漏通常表示代码草率,在代码草率中可能会出现其他问题,这会导致分段错误。

不,分段错误本身并没有比尝试访问不允许您访问的内存块更重要。另一方面,内存泄漏是指您分配了一些内存,然后 'forget' 分配了内存块的位置。存储的数据仍然存在,但无法再从该程序实例访问。

两者 errors/faults 几乎总是由于草率的编码实践而发生。因此,导致内存泄漏的草率编码也可能导致分段错误。