После this nice example Я нашел, я пытался создать функцию, которая динамически генерирует 2D-сетку (двухмерный массив) значений int
.Проблемы с памятью с двухмерным массивом
Он работает достаточно хорошо, в первую пару раз вы меняете значения, но если сработает после этого. Я предполагаю, что часть освобождения памяти не работает должным образом.
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;
}
Вы используете C++, а не C, используя стандартную библиотеку, это избавляет вас от тех проблем, которые у вас есть в вашем вопросе. – Mark
Быстрый комментарий. После // Убедитесь, что данные там, вы должны заменить 5 на numRows и 10 на numCols – ozke
@ozke Спасибо, что указали это. Исправлена. –