PS, 언어 공부/C, C++

[C++] 동적 배열 할당 및 삭제

Emil :) 2020. 5. 14. 21:30
728x90
반응형

개요


C++은 java와 다르게 가비지 컬렉터가 없어서 직접 할당한 배열을 삭제해줘야한다.
학교 수업 이후로 안써먹은 C++을 코딩테스트 때문에 공부하게되었다..
포인터 쥐약인데

오늘의 주제


C++의 동적 배열을 할당하고 삭제해보자

 

진행 과정


1. 동적 배열의 선언

코드


#include <iostream>
#include <string>
#include <vector>

using namespace std;

class solution {
public:
	solution();
};

solution::solution() {
	int n;
	cin >> n;
	int* num;
	num = new int[n];
	for (int i = 0; i < n; i++) {
		cin >> num[i];
	}
	
	for (int i = 0; i < n; i++) {
		cout << num[i];
	}

	delete[] num;
}


int main() {
	solution s;
}

먼저 전체 코드다. 너무 오랜만에 꺼낸 C++이라 문법이 긴가민가한데..
아무튼 간단하게 배열 크기와 안에 들어갈 수를 입력받고, 출력해주는 코드다.

int n;
cin >> n;
int* num;
num = new int[n];
for (int i = 0; i < n; i++) {
	cin >> num[i];
}

solution 기본 생성자 안에서 진행된다.
num 이라는 배열을 생성해주고, new int[]를 사용해서 동적배열을 만들어준 뒤에, n의 수만큼 삽입해준다.

for (int i = 0; i < n; i++) {
	cout << num[i];
}
delete[] num;

그리고 출력해주고 마지막엔 delete[] 를 써줘서 지워준다.
여기서 흔히 하는 실수가 delete[]가 아닌 delete를 사용하는건데, 이러면 메모리 누수 문제를 해결할 수 없다.

 

결과


 

간단하지만 기본중의 기본 문법이라 메모해둔다.

 

728x90
반응형