D3DXMATRIX ColladaFileLoader::processMatrix(daeElement* node)
{
D3DXMATRIX matWorld;
daeTArray<daeElementRef> nodeChildren = node->getChildren();
for (int i = 0; i < nodeChildren.getCount(); i++)
{
string type = nodeChildren[i]->getAttribute("sid");
if (type == "rotationX")
{
string data = nodeChildren[i]->getCharData();
stringstream stm(data);
stm >> matWorld.m[0][0];
stm >> matWorld.m[0][1];
stm >> matWorld.m[0][2];
stm >> matWorld.m[0][3];
}
if (type == "rotationY")
{
string data = nodeChildren[i]->getCharData();
stringstream stm(data);
stm >> matWorld.m[1][0];
stm >> matWorld.m[1][1];
stm >> matWorld.m[1][2];
stm >> matWorld.m[1][3];
}
if (type == "rotationZ")
{
string data = nodeChildren[i]->getCharData();
stringstream stm(data);
stm >> matWorld.m[2][0];
stm >> matWorld.m[2][1];
stm >> matWorld.m[2][2];
stm >> matWorld.m[2][3];
}
if (type == "location")
{
string data = nodeChildren[i]->getCharData();
stringstream stm(data);
stm >> matWorld.m[3][0];
stm >> matWorld.m[3][1];
stm >> matWorld.m[3][2];
matWorld.m[3][3] = 1;
}
}
return matWorld;
}
該函數在運行結束第一遍循環後運行debug assertion失敗。循環將正確運行,它將輸入最後一個if語句並正確設置所有值。然而,當通過完成,並在開始下一個通過之前,它會調試斷言失敗。我認爲它試圖銷燬字符串類型的變量,但是當它試圖刪除它時會破壞它。我不知道問題是什麼。它似乎是在我的程序的其他部分從文件中獲取字符串並將其放在std :: string中。我通過完全刪除這些來修復這些問題,但這個問題無法移除,因此需要將其解決。ColladaDOM加載程序調試斷言錯誤,字符串?
不知道這與它有什麼關係,但我使用visual studio 11 dev預覽版,並使用編譯器vs100(vs10的編譯器)設置。
dbgheap.c 線:1322
表達:_CrtISValidHeapPointer(pUserData)
還當我用我的瓦爾調試沒有從這個函數的錯誤後顯示出來。