我有一个复杂的应用程序,有很多第三方库,动态加载的插件。某些原因导致应用程序在主退出后崩溃(SIGSEGV
(。调用堆栈指向未知地址,所以我不仅无法调试,甚至不知道崩溃发生在哪里。
我试着用Valgrind
运行这个应用程序——它显示了泄漏(一些千字节(,但我认为它们是误报,和/或我对此无能为力,因为它们来自第三方。
我的问题是:我相信内存泄漏不会导致分段错误,至少我找不到可能的情况。但由于我不确定我是否愿意听到泄漏会破坏程序的情况(假设我只是内存不足时这不是一个疯狂的泄漏(。
否,内存泄漏本身不会导致分段错误。然而,内存泄漏通常表明代码草率,而在草率的代码中,可能会出现其他问题,从而导致分段错误。
不,分段错误本身并不意味着试图访问一段不允许访问的内存。另一方面,内存泄漏是指您分配了一些内存,然后"忘记"了内存的位置。存储的数据仍然存在,但无法再从该程序实例访问它。
这两个错误/错误几乎总是因为草率的编码实践而发生。因此,导致内存泄漏的草率编码也可能导致分段错误。