当前位置:  开发笔记 > 编程语言 > 正文

哪些C/C++工具可以检查缓冲区溢出?

如何解决《哪些C/C++工具可以检查缓冲区溢出?》经验,为你挑选了3个好方法。

我被要求维护一个充满内存泄漏的大型C++代码库.在探索时,我发现我们有很多缓冲区溢出导致泄漏(它如何变坏,我不想知道).

我决定先删除缓冲区溢出.为了使我的bug更容易找到,可以使用哪些工具来检查缓冲区溢出?



1> diciu..:

在Linux上我会使用Valgrind.


缓冲区溢出是一个非常讨厌的错误,因为效果不一定接近原因(即它可能会崩溃500行).如果堆栈被破坏,您将需要所有可以获得调试的帮助.这就是Valgrind闪耀的地方 - 它一旦发生就会陷入溢出.

2> David Thornl..:

考虑使用更现代的数据结构作为避免缓冲区溢出的方法.读入std :: string不会溢出,std :: vectors比数组更安全.我不知道您的应用程序是什么,并且可能因为您需要速度而使用原始缓冲区,但更常见的是它们被使用,因为这是原始程序员所熟悉的.

使用上述工具搜索内存泄漏是一个好主意,但它们可能找不到所有潜在的泄漏,而使用标准字符串和容器类可以消除您没有意识到的问题.



3> gbjbaanb..:

IBM的Purify将执行此操作,您在其下运行您的应用程序,它将为您提供所有错误(包括其他错误)的报告.

要消除内存泄漏,请使用UMDH - 运行您的应用程序,拍摄内存快照,再次运行,快照,然后使用diff工具查看自第一次运行以来所做的分配(请注意,您必须运行一次应用程序,并且尽可能快地拍摄快照.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有