Problème redimensionnement vector
Bonjour,
J'ai quelques problèmes à redimensionner une matrice :
Code:
1 2
| typedef std::vector<bool> TBoolArray;
typedef std::vector<TBoolArray> TBoolMatrix; |
Je sais comment la redimensionner, et ça marche très bien. Mais dans ce cas là, j'ai une erreur de la sorte à la fin, en mode DEBUG :
http://img208.imageshack.us/img208/1...orvs7dl.th.jpg
Donc l'application essaye d'écrire dans la mémoire à la fin de son exécution.
Voici le code donnant lieu à tout ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| void CSprite::BuildCollisionTable()
{
// Redimensionnement de la matrice de collision
m_CollisionTable.resize( Height );
for(int i = 0; i < Height; i++)
{
m_CollisionTable[i].resize( Width );
for(int j = 0; j < Width; j++)
{
m_CollisionTable[i][j] = false;
}
}
// Verrouillage de la texture
D3DLOCKED_RECT Rect;
if( m_Texture->lpTexture->LockRect(0, &Rect, &rSprite, D3DLOCK_READONLY) != D3D_OK )
return;
unsigned long* iPixels = reinterpret_cast<unsigned long*>(Rect.pBits);
unsigned int iPitch = Rect.Pitch >> 2;
// Construction de la matrice à partir du canal alpha
for (int i = 0; i < Height; i++)
for (int j = 0; j < Width; j++)
{
m_CollisionTable[i][j] = ((Dragoon::CColor(iPixels[j + i * iPitch])).GetAlpha() != 0x00);
}
// Déverrouillage de la texture
m_Texture->lpTexture->UnlockRect(0);
} |
m_CollisionTable est donc une TBoolMatrix, membre privé de la classe CSprite.
Lorsque je n'appelle pas BuildCollisionTable, ça marche. Plus précisément, lorsque la matrice n'est pas redimensionnée, je n'ai pas l'erreur.
Si je supprime la partie qui sert à remplir la matrice, j'ai droit tout de même à l'erreur. Il n'y a que le redimensionnement qui provoque l'erreur.
Créer une matrice temporaire à la place (inutile mais pour test) ne provoque pas d'erreur, par contre des que je veux la swapper en fin de fonction avec m_CollisionTable, là j'ai l'erreur qui reviendra.
Conclusions : Dès que je touche aux dimensions de m_CollisionTable ==> ERREUR.
Une idée ?