0

現在、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 を使用

4

3 に答える 3