【发布时间】:2016-07-18 13:34:02
【问题描述】:
我对使用许多vector::resize、vector::reserve 和memcopy 操作的程序进行了一些更改,以便操作缓冲区以从文件中读取数据。我在 Linux 上运行了我的单元测试,它们以优异的成绩通过了,但是当我在 Windows 机器上运行相同的测试时,我看到了 memory access violation occurred at address 0x0038e000, while attempting to read inaccessible data。
我接受了一些我在网上阅读的建议并针对我的程序运行 Valgrind 以尝试检测内存泄漏/问题,但是它返回“所有堆块都已释放,不可能有泄漏”。
关于如何在 Windows 中找出内存错误的原因还有其他建议吗?
谢谢!
【问题讨论】:
-
你不需要 valgrind。你只需要一个调试器。查找导致此错误的代码行并从此处开始工作。
-
在调试器下运行,当程序出错时检查调用历史/堆栈帧。
-
尝试使用address sanitizer构建程序
标签: c++ memory-leaks