【发布时间】:2016-10-21 14:44:19
【问题描述】:
我的程序中有内存泄漏。我已将所有对malloc(和new)的调用替换为对我自己的函数的调用,该函数跟踪分配的内容。在程序结束时,我比较开始分配的东西和最后分配的东西,以获得所有“泄漏”的东西的列表。
最终目标是获取“泄漏”位置列表,并将它们放入一个数组中。每次分配某些东西时,都会根据“泄漏”地址列表检查它,如果匹配,它会调用一个特殊函数,然后我可以在该函数上设置断点(然后我可以找出哪些对象正在泄漏和妥善处理)。
问题是,每次程序运行时地址的前几部分都会改变。例如,第一次,一个“泄露”的地址是0x10c10,而下一次,它可能是0x20c10。后几位数字始终相同,但前几位数字不同。
有没有办法只比较最后几位数字?我正在考虑使用 mod,但我无法想出任何有效的方法。这些是常规整数,而不是字符串或任何东西。
【问题讨论】:
-
mod(我假设你的意思是%)怎么不起作用?这么简单的数学题,怎么会不行呢? -
只是掩码:
addr = number & 0x0000FF; -
不保证不同进程的内存映射相同,即使不同的进程运行同一个可执行文件。甚至没有任何地址的最后一位。
-
“如何测试一个数字是否以一个值结尾” - 什么?一个数字是一个值。您使用哪种语言? C 还是 C++?你的代码在哪里?你应该学习How to Ask并提供minimal reproducible example。
标签: c++ c memory-leaks