使用 Xcode 12,Apple Clang Address Sanitizer,我启用...启用 C++ 容器溢出检查(用于调试和发布)。
我希望启用 C++ 容器溢出检查给我运行时警告,例如。通过将每个翻译[]
成.at()
.
我运行类似于下面的代码(它出现在一堆以前的函数调用的末尾,其中元素的数量V
在编译时无法知道。)
// V is a container with 100 elements,
// each element is a pointer to objects with a field f;
auto x = V[200]; // gives no error, no bounds checking (but V.size() is 100)
cout << x->f; // gives error, this object is not valid
我没有得到预期的结果,没有对V
.
问题:启用 C++ 容器溢出检查.at()
是否应该像边界检查一样给我[]
访问权限?我怎样才能做到这一点?