프로그래밍/C++
new & delete
리뷰하는 (게임)프로그래머_리프TV
2010. 3. 17. 10:49
new와 delete, c언어의 malloc과 free와 개념은 똑같다.
사용법에 대해서는 소스 코드를 참조.
#include <iostream>
#define HEIGHT 3
#define WIDHT 4
#define PLANE 2
void main()
{
// 2차원
int **p;
int cnt = 0;
// 할당
p = new int*[HEIGHT];
for( int i=0; i<HEIGHT; i++ )
{
p[i] = new int[WIDHT];
}
for( int i=0; i<HEIGHT; i++ )
{
for( int j=0; j<WIDHT; j++ )
p[i][j] = cnt++;
}
// 삭제
for( int i=0; i<HEIGHT; i++ )
{
delete [] p[i];
}
delete [] p;
// 3차원
int ***p2;
cnt=0;
// 생성 후 간단한 값 입력
p2 = new int**[PLANE];
for( int i=0; i<PLANE; i++ )
{
p2[i] = new int*[HEIGHT];
for( int j=0; j<HEIGHT; j++ )
{
p2[i][j] = new int[WIDHT];
for( int k=0; k<WIDHT; k++ )
{
p2[i][j][k] = cnt++;
}
}
}
// 출력
for( int i=0; i<PLANE; i++ )
{
for( int j=0; j<HEIGHT; j++ )
{
for( int k=0; k<WIDHT; k++ )
{
std::cout << "p[" << i << "]" << "[" << j << "]" << "[" << k << "] = " <<p2[i][j][k] << std::endl;
}
std::cout << std::endl;
}
}
// 삭제
for( int i=0; i<PLANE; i++ )
{
for( int j=0; j<HEIGHT; j++ )
{
delete [] p2[i][j];
}
delete [] p2[i];
}
delete [] p2;
}