Après this nice example J'ai trouvé, j'essayais de créer une fonction qui génère dynamiquement une grille 2D (tableau à deux dimensions) de int
valeurs.Problèmes de mémoire avec le tableau à deux dimensions
Cela fonctionne assez bien les deux premières fois que vous modifiez les valeurs, mais si cela se bloque après cela. Je suppose que la partie où la mémoire est libérée ne fonctionne pas comme elle le devrait.
void testApp::generate2DGrid() {
int i, j = 0;
// Delete previous 2D array
// (happens when previous value for cols and rows is 0)
if((numRowsPrev != 0) && (numColumnsPrev != 0)) {
for (i = 0; i < numRowsPrev; i++) {
delete [ ] Arr2D[i];
}
}
// Create a 2D array
Arr2D = new int * [numColumns];
for (i = 0; i < numColumns; i++) {
Arr2D[i] = new int[numRows];
}
// Assign a random values
for (i=0; i<numRows; i++) {
for (j = 0; j < numColumns; j++) {
Arr2D[i][j] = ofRandom(0, 10);
}
}
// Update previous value with new one
numRowsPrev = numRows;
numColumnsPrev = numColumns;
}
Vous utilisez C++ non C utilisez la bibliothèque standard, elle vous évite le type de problèmes que vous avez dans votre question. – Mark
Commentaire rapide. Après // Assurez-vous que les données sont là, vous devez remplacer 5 par numRows et 10 par numCols – ozke
@ozke Merci de le signaler. Fixé. –