C++ 如何确定C+中发生内存泄漏的位置+;?
我的程序中有内存泄漏,我正在尝试确定它泄漏的位置C++ 如何确定C+中发生内存泄漏的位置+;?,c++,C++,我的程序中有内存泄漏,我正在尝试确定它泄漏的位置 如果你能对这个问题有所了解,请这样做。分析工具应该能够提供帮助。 例如: 此外,您还可以尝试检查编译器中的所有警告消息 编辑:我错过了关于“没有工具”的部分 我认为检查编译器警告是很好的第一步 您还可以尝试在所有free/delete代码周围放置调试语句,以确保释放的内容有效 查找常见的错误,例如:“删除ptr”而不是“删除[]ptr” 只需对代码中的所有“new”和“delete”语句进行grep/搜索,看看它们是否有意义。分析工具应该能够提供
如果你能对这个问题有所了解,请这样做。分析工具应该能够提供帮助。 例如: 此外,您还可以尝试检查编译器中的所有警告消息 编辑:我错过了关于“没有工具”的部分 我认为检查编译器警告是很好的第一步 您还可以尝试在所有free/delete代码周围放置调试语句,以确保释放的内容有效 查找常见的错误,例如:“删除ptr”而不是“删除[]ptr”
只需对代码中的所有“new”和“delete”语句进行grep/搜索,看看它们是否有意义。分析工具应该能够提供帮助。 例如: 此外,您还可以尝试检查编译器中的所有警告消息 编辑:我错过了关于“没有工具”的部分 我认为检查编译器警告是很好的第一步 您还可以尝试在所有free/delete代码周围放置调试语句,以确保释放的内容有效 查找常见的错误,例如:“删除ptr”而不是“删除[]ptr”
只需grep/搜索代码中的所有“new”和“delete”语句,看看它们是否有意义。检查crtdbg类的"CrtDumpMemoryLeaks()函数检查crtdbg类的"CrtDumpMemoryLeaks()函数,因为问题(现在)说“不使用任何工具”,然后,您可能需要查看源代码。一个要看的地方是每个类的构造函数和析构函数
- 构造函数分配的所有内存都是由析构函数释放的吗
- 如果类中的其他方法分配内存,则该内存是由析构函数释放的吗
new
(所有种类)的实例,并确保您可以确定释放分配内存的位置
<>和,如果你被误导,通过C代码> MARROCK()//>代码>代码> > RealCube()/代码>,和删除malloc()分配的空间也不会尝试free()
新分配的空间)
考虑是否应该使用各种自动指针管理器类之一来确保释放内存
您可能最好使用可用的工具来突出显示泄漏发生的位置。因为问题(现在)说“不使用任何工具”,那么您可能需要查看源代码。一个要看的地方是每个类的构造函数和析构函数
- 构造函数分配的所有内存都是由析构函数释放的吗
- 如果类中的其他方法分配内存,则该内存是由析构函数释放的吗
否则,请查找new
(所有种类)的实例,并确保您可以确定释放分配内存的位置
<>和,如果你被误导,通过C代码> MARROCK()//>代码>代码> > RealCube()/代码>,和()(代码)>在你的C++代码中,然后在每个分配上做一个类似的练习,确保你知道相应的版本在哪里。(我假设您永远不会尝试删除malloc()分配的空间也不会尝试free()
新分配的空间)
考虑是否应该使用各种自动指针管理器类之一来确保释放内存
您可能最好使用可用的工具来突出显示泄漏发生的位置。如果您拒绝使用其他工具,您将被1.0版的人眼卡住。不幸的是,除非代码非常简单,否则这可能并不容易。我并不是说这话听起来很难听,但在设计良好的代码中,内存泄漏是极其罕见的。这意味着,您正在处理的代码很有可能在一开始就存在一些相当严重的问题,在这种情况下,通过检查发现泄漏可能会非常缓慢和痛苦
检查的明显出发点是所有使用new
、malloc
、calloc
,等等,并且(应该)匹配调用delete
、free
,等等。如果你拒绝使用其他工具,你几乎被人类眼球(1.0版)卡住了。不幸的是,除非代码非常简单,否则这可能并不容易。我并不是说这话听起来很难听,但在设计良好的代码中,内存泄漏是极其罕见的。这意味着,您正在处理的代码很有可能在一开始就存在一些相当严重的问题,在这种情况下,通过检查发现泄漏可能会非常缓慢和痛苦
检查的明显起点是所有new
、malloc
、calloc
等的使用,以及(应该)匹配调用delete
、free
等。可能重复,尽管您没有指定您使用的操作系统。没有工具?没有工具,你到底愿意去哪里派斯。没有工具。知道吗?我的意思是。。。你必须使用一些工具。例如,你的计算机和它的操作系统,你的编译器,或者IDE?什么时候你会停止使用工具?就这一点而言,为什么要消除工具?代码分析和分析工具是交易的诀窍。虽然你没有指定你在哪个操作系统上,但可能重复。没有工具?没有工具,你到底愿意去哪里派斯。维索