用Parallel Inspector检测出一个项目的内存错误

最近在做项目开发中,使用了一个开源的代码框架,Debug编译的时候一切正常,但是在Release时候就挂了。找了老半天也没找出哪里错,因为一下就跳到系统DLL,然后就崩溃了,连call stack都看不到了,应该是堆栈被破坏了。根据经验判定可能是内存分配释放问题,因为Release版本可能暴露出一些Debug版本的内存使用问题。

这时想起不是Intel Parallel Inspector能找内存错误吗?就开到它的最大内存错误检查模式试着跑一把。结果大有收获!原来是使用的框架中犯了一个经常犯的错误: p = new Foo [100] 必须用 delete [] p 结果用了delete p,但是用的是别人的框架啊,几万行代码哪儿去找这个不起眼的错误?还是工具好用,马上改过来,一切恢复正常!

Einzelheiten zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.