이중 포인터 동적할당
이중 포인터의 동적할당하는 법에 대해 알아보자.
09. 줄의
m_nArray = new int*[6]; 는 int형 포인터로 된 배열을 6개 만든다는 뜻이다.
10~13. 줄은
for(int i=0; i<6; i++)
{
*(m_nArray+i) = new int[5];
}
현재 만들어진 6개의 배열 안에 5개의 배열을 또 만든다는 것이다.
배열의 초기화를 보면
m_nArray[6][5]의 형태로 만들어 진 것을 볼 수 있다.
1부터 초기화 하고 출력하면 다음과 같은 결과가 나온다.
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
26 27 28 29 30
포인터의 동적할당에서 중요한 점은
꼭 ! 반드시 ! 메모리 해제를 해줘야한다. 는 것이다.
동적할당하는 변수는 메모리 공간중 힙이라는 곳에 생성되는데, 메모리 해제를 해주지 않으면 후에 자료가 쌓이고 쌓여 컴퓨터가 느려지는 현상이 발생할 수도 있기 때문이다.
37~41.
for(int i=0;i<6;i++)
{
delete [] *(m_nArray+i);
}
delete [] m_nArray;
먼저 처음 만든 6개의 방을 하나씩 해제해 준 다음
m_nArray 배열을 해제해주면 메모리 해제가 끝이 난다.
'예전 > C, C++' 카테고리의 다른 글
[C++] C++ 스타일 파일 입출력 (1) | 2012.04.29 |
---|---|
[C++] 1차원 배열 셔플 (0) | 2012.04.28 |
_kbhit() 과 _getch() (0) | 2012.04.28 |
[C언어] 진법과 진법의 변환 (0) | 2012.04.28 |
[C언어] C언어의 자료형 (0) | 2012.04.28 |