【发布时间】:2014-09-15 06:08:57
【问题描述】:
我想知道是否有某种方法可以识别特定平台上的无效内存地址(x86 64 位,就我而言)。我需要它在程序取消引用地址并引发 SIGILL/SIGSEGV 错误之前捕获它。
【问题讨论】:
-
您可以使用 valgrind 来帮助追踪这类东西,这不仅会捕获明显的无效取消引用,而且通常会捕获更微妙的取消引用,例如 off-by-one 等。
-
不能修复访问无效内存位置的代码吗?
-
也许不能再使用后马上设置为NULL?
-
我在下面暗示了这一点,但这听起来非常像an X-Y problem。如果您可以举例说明为什么您需要检查地址是否有效,而不是将您的程序设计为确定它是有效的,这可能会有所帮助。
-
我问这个问题是因为 valgrind 无法使用,因为产品和运行它的测试用例太大了。我想我应该清楚地提到这一点!