如果是这样,我该如何开启?我自己在文档中找不到这个,谷歌没有提供有用的结果
例如,
int arr[2];
arr[5] = n; // runtime error
最佳答案
是的。启用此功能的命令行是 -fsanitize=address
.
有关这方面的更多信息,包括预期的减速以及您可能会收到链接错误的原因,请参阅 Clang's AddressSanitizer Documentation .
请记住,地址清理器不仅仅是对堆栈对象进行边界检查;如果这是您想要的唯一功能,我认为您可以通过额外传递 -mllvm -asan-stack
来限制它仅执行此操作。 .见 this page on address sanitizer flags详情。
关于clang - clang 支持边界检查吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22827326/