如果只有主应用程序用clang编译的话,可以用clang地址清理器吗?

我的应用程序使用gcc编译的静态库:Boost(C ++ 11 lambda(具有boost绑定和boostfunction))Bullet; 系统共享库(如SDL)以及一个用clang编译的共享库。 这样的动物园可能会搞乱AdressSanitizer吗?

是的,如果他们没有仪表:

https://code.google.com/p/address-sanitizer/wiki/AddressSanitizer

为了使用AddressSanitizer,您将需要使用clang和-fsanitize = address开关编译和链接您的程序。

ASan运行时库必须出现在你的程序中,所以你的主要可执行文件需要和-fsanitize = address标志链接起来。 将非检测和检测库链接在一起可能会起作用,除非在运行时库初始化之前执行检测代码(我认为现在在Linux上是不可能的)。 请注意,AddressSanitizer将无法在未由Clang检测的代码中查找可寻址性问题。