我的问题有两部分:
我在C++上读过关于记忆管理的文章,但是没有找到任何关于我的具体问题的东西。
发布于 2012-06-18 16:40:08
是否有可能,如果在分配内存之后发生分段错误,但在释放它之前,会泄漏内存(也就是说,内存永远不会被释放,从而导致内存泄漏)吗?
是的和不是的:崩溃的过程应该完全由操作系统来处理。但是,请考虑由您的流程生成的其他进程:它们可能不会完全终止。然而,通常这些应该不会占用太多的资源,但这可能会因您的程序而有所不同。请参阅http://en.wikipedia.org/wiki/Zombie_process
如果是的话,是否有任何方法确保在发生分段错误时清除分配的内存?
如果程序是非关键的(这意味着如果它崩溃就没有生命危险),我建议修复分段错误。如果您真的需要能够处理分段错误,请参阅本主题的答案:How to catch segmentation fault in Linux?
UPDATE:请注意,尽管可以处理SIGSEGV信号(并保持程序流),但这并不是一种安全的依赖方式,因为--正如下面的注释所指出的--它是未定义的行为,意味着不同的平台/编译器/.可能有不同的反应。
因此,通过任何可能的方法,修复分段错误(以及windows上的访问冲突)都应该具有第一优先级。仍然使用建议的解决方案来以这种方式处理信号,必须进行彻底的测试,如果将其放入生产代码中,您必须意识到这一点,并得出任何结果--这些结果可能会根据您的需求而变化和依赖,因此我不会给出任何结果。
https://stackoverflow.com/questions/11087102
复制相似问题