알버트의 개발하는 블로그

C 언어 / C++ 언어 제16강 메모리 동적 할당으로 이차원 배열 만들기 본문

프로그래밍 언어/C & C++

C 언어 / C++ 언어 제16강 메모리 동적 할당으로 이차원 배열 만들기

알버트 2021. 4. 29. 15:38

 

이번 시간에는 메모리 동적 할당을 이용해서 이차원 배열을 만들고 출력해보겠습니다.

예전에 메모리 동적 할당을 이용해서 일차원 배열 만들고 출력하기는 해보았는데요. 이번에는 약간 복잡한 이차원 배열입니다. 하지만 막상 코딩해보면 그다지 어렵지는 않습니다.

 

일차원 배열 동적 할당은

C는 자료형 *배열이름 = (자료형 *)malloc(sizeof(자료형) * 메모리크기)

C++에서는 자료형 *배열이름 = new 자료형[메모리크기]

로 사용했었습니다. 이차원 배열은 이 문법이 거의 그대로 사용되지만, *이 하나 더 붙습니다.

 

 


코딩과 실행 결과

한번 코딩해보겠습니다. 먼저 c언어 문법입니다.

대표사진 삭제

사진 설명을 입력하세요.

c에서는, 자료형 **배열이름 = (자료형 **)malloc(sizeof(자료형) * 메모리크기) 이렇게 먼저 선언해줍니다. 이 작업은 이차원 배열에서 먼저 행을 만들어 주는 작업입니다.

그리고 나서, 각 열의 값을 입력해주는 부분이 바로 a[i] = (int *)malloc(sizeof(int) * n); 입니다.

이렇게만 선언해준다면 각 변수들에는 쓰레기값이 들어가게 되므로 memset함수를 통해서 모두 0으로 초기화해주었습니다.

실행해보겠습니다.

대표사진 삭제

사진 설명을 입력하세요.

이렇게 배열의 크기 11을 입력하니까 11행11열의 이차원 배열이 동적할당되어 만들어졌음을 알 수 있습니다.

 

 

 

 

 

그러면 이번엔 c++ 에서의 메모리 동적 할당을 배워보겠습니다.

일차원 배열 메모리 동적 할당에서도 보셨다시피, c언어보다는 c++의 동적 할당이 훠월~씬 쉽습니다. 되도록 c++을 사용하시는 것을 추천드립니다!

대표사진 삭제

사진 설명을 입력하세요.

이렇게 코딩해보았습니다. 앞에 c언어와 달라진 점은 딱 두군데입니다.

int **a = new int*[n];

a[i] = new int[n];

이 부분만 달라졌다는 것을 알 수 있습니다. c에 비해서 굉장히 간단하죠? 그래서 메모리 동적 할당은 c++로 해주는 것이 유리합니다. 자 이 상태에서 실행해보겠습니다.

 

대표사진 삭제

사진 설명을 입력하세요.

이렇게 배열의 크기 8을 입력하니까 8행8열이 출력되었음을 알 수 있습니다.

 

이처럼 메모리 동적 할당을 이용하면 자신이 원하는 만큼의 크기를 동적으로 할당하여 메모리를 사용할 수 있답니다. 읽어주셔서 감사합니다~