以下this nice example我發現,我試圖創建一個函數,動態生成一個int
值的2D網格(二維數組)。二維數組的內存問題
前兩次你改變值,但如果在此之後崩潰,它工作得很好。我猜想內存釋放的部分不能正常工作。
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 2010-07-21 08:52:53
快速評論。之後//確保數據在那裏,您應該用numRows替換5,用numCols替換10。 – ozke 2010-07-21 10:38:21
@ozke感謝您指出了這一點。固定。 – 2010-07-21 11:05:39