본문 바로가기

예전/C, C++

[C++] 이중 포인터 동적할당 및 메모리 해제


이중 포인터 동적할당



이중 포인터의 동적할당하는 법에 대해 알아보자.




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