본문 바로가기
프로그래밍/C++

new & delete

by 리뷰하는 (게임)프로그래머_리프TV 2010. 3. 17.


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;
}

'프로그래밍 > C++' 카테고리의 다른 글

class(클래스) ~ C++의 꽃 ~  (0) 2010.03.19
레퍼런스(Reference)  (0) 2010.03.18
const 상수화  (0) 2010.03.17
namespace(이름 공간)  (0) 2010.03.15
inline 함수  (0) 2010.03.15