C++ C++;索引超出范围时不应出现

C++ C++;索引超出范围时不应出现,c++,arrays,vector,copy,C++,Arrays,Vector,Copy,我当时正试图在DirectX中编写一个OBJMesh加载程序,我的代码中有一部分遇到了问题: unsigned int vertexCount = vertexData.size(); VERTEX* vertices = new VERTEX[vertexCount]; std::copy(vertexData.begin(), vertexData.end(), vertices); std::copy中的vertexData是一个向量,我正试图将vertexData中的数据复制到我新创建

我当时正试图在DirectX中编写一个OBJMesh加载程序,我的代码中有一部分遇到了问题:

unsigned int vertexCount = vertexData.size();
VERTEX* vertices = new VERTEX[vertexCount];
std::copy(vertexData.begin(), vertexData.end(), vertices);
std::copy
中的
vertexData
是一个
向量
,我正试图将vertexData中的数据复制到我新创建的顶点数组中


加载objmesh文件时,我检查了2841个顶点是否正确,并将其存储到vertexCount(我通过执行
std::cout检查
顶点的行为[3000]X/<代码>是:编译器/运行时不必提供任何诊断。

C++中的一个数组结束时访问一个元素是未定义的行为。这基本上意味着任何事情都可能发生,并且你不应该期望任何特定的结果或错误。

< P>你所做的导致了未定义的行为。任何事情都可能发生,你。绝对不能期望出现越界异常。只有使用
std::vector
并使用.at()而不是[]访问元素时,才能实际获得该异常。

哪个编译器?哪个操作系统?许多编译器都有启用“选中”的方法迭代器和索引函数。标准的哪一部分支持您的程序应该崩溃并显示错误的说法?越界访问是未定义的行为。今天的第三个问题完全相同……您的顶点只是一个普通数组。没有边界检查。