我想在DirectX的時刻寫OBJMesh裝載機和我碰到一個問題就用我的代碼段:C++索引超出範圍未發生時,它應該
unsigned int vertexCount = vertexData.size();
VERTEX* vertices = new VERTEX[vertexCount];
std::copy(vertexData.begin(), vertexData.end(), vertices);
中的vertexData
std::copy
是vector<VERTEX>
,我試圖將vertexData中的數據複製到我新創建的頂點數組中。
當我加載我的objmesh文件時,我檢查了有2841個頂點是正確的,我將它存儲到vertexCount(我通過執行std::cout << vertexCount
檢查了它)。
然而,真正的問題是,當我通過輸入std::cout << vertices[3000].x
檢查陣列的數據和大小它打印出的東西而不觸發索引出界錯誤。
知道我已經創建了大小爲2841的頂點數組,編譯器應該停止並顯示錯誤嗎?究竟是什麼問題,爲什麼它的行爲如此?
請幫
編輯: 使用Visual Studio 2010 64位Windows 7
哪個編譯器?哪個操作系統?許多編譯器都有一些方法來啓用「checked」迭代器和索引函數。 – bennofs
該標準的哪個部分支持您聲稱您的程序會崩潰並顯示錯誤? – chris
此處出現越界訪問*未定義行爲*。 – juanchopanza