clang - clang 支持边界检查吗?

标签 clang clang++

如果是这样,我该如何开启?我自己在文档中找不到这个,谷歌没有提供有用的结果

例如,

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/

相关文章:

c++ - 比较两个map::iterators:为什么需要std::pair的拷贝构造函数?

c++ - 为什么在堆数组初始化中调用了两次复制构造函数?

c++11 - 在 Windows 中将 std::stoi 和 std::stod 与 clang++ 结合使用

c++ - 使用 gcc 或 clang 自动生成 header

linker-errors - Clang++ Windows LNK1112 错误

c++ - gcc/clang 在基本结构的后填充中布置派生结构的字段

c++ - 编译器会优化和重用变量吗

c++ - 有没有办法让 G++/clang++ 的编译时间和 MSVC 一样快?

c++ - 右值 Hello World 缺少构造函数

c++ - 编译器优化 : move variable from stack to register