소멸자 내부의 삭제 코드가 기능상 제대로 작동하지 않는다는 것을 전혀 알지 못했습니다. 나는 사람들이 나를 도울 수 있기를 바랍니다.C++에서이 2D Array를 삭제하는 방법
정말 고마워요!
class Array2D
{
public:
Array2D();
Array2D(int, int);
~Array2D();
private:
int row;
int col;
int **p;
};
Array2D::Array2D()
{
// Default Constructor
}
Array2D::Array2D(int rows, int cols)
{
this -> row = rows;
this -> col = cols;
p = new int* [row];
for(int i=0; i< row; i++)
p[i] = new int[col];
// Fill the 2D array
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
{
p[i][j] = rand() % 100;
}
}
Array2D::~Array2D()
{
// I'm using this way to delete my 2D array.
// however, it won't work!
for (int i = 0; i < row; i++)
{
delete[]p[i];
}
delete[]p;
}
어떻게 작동하지 않습니까? – Yacoby
실제로'std :: vector'을 사용하고'row * col'에 크기를 조정하고 선형 인덱스를 사용하십시오 _or_ Boost.MultiArray (http://www.boost.org/doc/libs/1_42_0/libs/) multi_array/doc/user.html). –
kennytm
소멸자에 브레이크 포인트를 붙이십시오 - "p"라고 예상 하시겠습니까? 유효한 메모리 덩어리를 가리키고 있습니까? –