如何在 Linux 上强制执行向量下标超出范围调试断言
Posted
技术标签:
【中文标题】如何在 Linux 上强制执行向量下标超出范围调试断言【英文标题】:how to enforce vector subscript out of range debug assertion on linux 【发布时间】:2017-07-14 13:32:57 【问题描述】:此代码适用于 linux。
#include <vector>
#include <iostream>
using namespace std;
int main ()
vector<int> v(10, 0);
cout << v[100];
return 0;
operator[] 用注释声明
// element access
/**
* @brief Subscript access to the data contained in the %vector.
* @param __n The index of the element for which data should be
* accessed.
* @return Read/write reference to data.
*
* This operator allows for easy, array-style, data access.
* Note that data access with this operator is unchecked and
* out_of_range lookups are not defined. (For checked lookups
* see at().)
*/
reference
operator[](size_type __n) _GLIBCXX_NOEXCEPT
return *(this->_M_impl._M_start + __n);
但 MSVS 编译器会警告此类下标超出范围的情况。有什么方法可以模仿它的行为吗?
【问题讨论】:
Related. thx,C (libc) 有类似的东西吗? 我不知道。 【参考方案1】:其实我的一个同事已经找到了想要的答案:
-D_GLIBCXX_DEBUG
标志激活 libstdc++ 的调试模式。
【讨论】:
以上是关于如何在 Linux 上强制执行向量下标超出范围调试断言的主要内容,如果未能解决你的问题,请参考以下文章