동적 배열을 만드는 방법은 malloc을 쓰는 방법과 포인터를 쓰는 방법 두가지가 있다.
여기서 두 방법을 사용해 동적배열을 만드는 방법과 각각 데이터를 해제하는 방법을 살펴보자.
주의점 : 데이터를 해제하지 않으면 데이터 누수가 발생한다.
C++ 동적 배열 생성
방법 1. 포인터를 사용한 방법
int A;//A를 만듬
cin >> A;// 정수 A를 입력받음
int* B = new int[A]; //B[A] 의 배열이 생김
delete[] B;// 동적 배열 B[A]를 해제
포인터 B 에 새로운 int [A]를 생성해줘서 배열을 만들었다.
방법 2. malloc을 사용한 방법
int A;
cin >> A;// 정수 A를 입력받음
int* B = (int*)malloc(sizeof(int) * A);// B[A] 의 배열이 생김
free(B);// 동적 배열 B[A]를 해제
malloc(N) 은 N에 적은 숫자만큼의 공간을 생성하는데 여기서 sizeof(int)를 사용해서 int값이 들어갈 공간을 만들수 있다.
sizeof(int)에서 B를 곱해주면 int값이 들어갈 크기가 B만큼 생성되어 배열을 만들수 있다.
이중 배열 생성
방법 1. 포인터를 사용한 방법
int A;
cin >> A;// 정수 A를 입력받음
int** B = new int* [A];
for (int i = 0; i < A; i++)//B[A][A] 이중 배열 생성
{
B[i] = new int[A];
}
for (int i = 0; i < A; i++)// 동적 배열 B[A][A]를 해제
{
delete[] B[i];
}
delete[] B;
이중 포인터를 사용해 *B[A]를 만들고
B[A]에 다시 포인터를 사용해 B[A][A]를 만든다.
방법 2. malloc을 사용한 방법
int A;
cin >> A;// 정수 A를 입력받음
int** B = (int**)malloc(sizeof(int) * A);// B[A][A] 이중 배열 생성
for (int i = 0; i < A; i++)
{
B[A] = (int*)malloc(sizeof(int) * A);
}
for (int i = 0; i < A; i++)// 동적 배열 B[A][A]를 해제
{
free(B[i]);
}
free(B);
malloc 을 사용해 (sizeof(int)) int사이즈의 공간을 (*A) A를 곱한 값만큼 생성한다.
그렇게 생긴 배열 B[A]의 배열에 다시 malloc을 해서 각 배열에 공간을 만들어 준다.
'코딩 > C++' 카테고리의 다른 글
[C++] 구조체 (0) | 2022.04.18 |
---|---|
[C++] 키 인식 (0) | 2022.04.13 |
[C++] 배열 (0) | 2022.04.13 |
[C++] 제어문 (0) | 2022.04.12 |
[C++] 난수 생성 (0) | 2022.04.11 |