現在、DirectX で OBJMesh ローダーを作成しようとしていますが、コードの一部で問題が発生しました。
unsigned int vertexCount = vertexData.size();
VERTEX* vertices = new VERTEX[vertexCount];
std::copy(vertexData.begin(), vertexData.end(), vertices);
はvertexData
で、std::copy
頂点vector<VERTEX>
データのデータを新しく作成した頂点配列にコピーしようとしています。
objmesh ファイルをロードすると、正しい 2841 個の頂点があることを確認し、それを vertexCount に格納しました (実行して確認しましたstd::cout << vertexCount
)。
ただし、実際の問題は、入力して配列のデータとサイズをチェックすると、インデックスの範囲外エラーstd::cout << vertices[3000].x
をトリガーせずに何かが出力されることです。
サイズが 2841 の vertices 配列を作成したことを知っていれば、コンパイラは停止してエラーを表示するはずです。正確には何が問題で、なぜこのように動作するのですか??
助けてください
編集: Visual Studio 2010 Windows 7 64bit を使用