内存泄漏和分段错误的一般原因是什么?
答案 0 :(得分:5)
的段错误:
内存/资源泄漏:
如何检测/避免:
答案 1 :(得分:2)
内存泄漏:通常,这是指C语言,您可以手动管理内存。在这种情况下,当您完成使用它时,您将分配内存而不释放它。应用程序运行时,分配不断堆积,并且在进程完成执行之前无法释放内存。 Memory Leaks (Wikipedia)
分段错误:此类错误的最常见原因是尝试访问一部分内存,该内存不存在或位于正在运行的程序的允许内存之外(例如如果您尝试访问内存,则加载操作系统)。通常这意味着您尝试使用错误的指针,例如:
int* ptr;
...
...
...
*ptr = 5;
会导致段错误,因为ptr是一个空指针(或垃圾),并且您没有为指向指向的指针分配内存。 Segmentation Fault (Wikipedia)
答案 2 :(得分:1)
很多,包括:
并非所有这些都适用于所有语言,但这些是开始思考的一些有用的东西。
答案 3 :(得分:0)
参见Addison Wesley的Effective C ++系列,非常适合手头的问题。请注意,在指针使用中,必须单独删除所有元素,然后删除指针 - 需要技巧并且通常不正确,导致隐藏的错误不容易显示。 其他海报有答案,我只是添加了一个额外的细节。