C++ 메모리 동적할당

Joosi_Cool·2022년 10월 3일
2

C++

목록 보기
15/20
post-thumbnail

메모리 동적할당이란?

이전엔 변수 선언을 통해 필요한 메모리를 할당하는 방식(정적 할당)이라면, 동적할당은 실행중에 힙 메모리에서 할당하는 방식을 말합니다. 이 덕분에 필요한 양이 상수로써 선언을 못하는 경우 매우 유용할 수 있습니다.

선언 방법은? (new, delete)

new 연산자란?

쉽게 말해, 메모리 동적할당을 하는 연산자이다.

  • 선언방법은?

    자료형 *변수명 = new 자료형[인덱스값];
    ex) int *example = new int[5];

delete 연산자란?

사용자에 의해 메모리가 동적으로 할당이 되면 프로그램이 끝날 때까지 유지되므로, 메모리 공간 사용이 끝나면 메모리 낭비(누수)를 줄이기 위해 명시적으로 메모리 할당을 해제 해주어야한다. 이때 필요한것이 delete연산자이다.

  • 선언방법은?

    delete p; // 이는 변수형태를 해제
    delele [] p; // 이는 배열형태의 해제

여기서 주의해야할 점이 배열의 형태인데, [ ] 대괄호를 해주지 않는다면 배열에 접근할 수 있는 첫번째 영역만 사라지는 것이다. 따라서 메모리 누수가 발생한다.

예시 코드

#include<iostream>
using namespace std;

int main() {


	int count;
	cin >> count;

	int* a = new int[count]; //new 연산자 동적 메모리 생성 


	for (int i{ 0 }; i < count; i++) {
		cin >> a[i];
	}


	for (int i{ 0 }; i < count; i++) {
		cout << a[i] << " ";
	}

	delete[] a; //delete 연산자
}

동적 메모리 할당의 최대 강점은 위의 코드처럼 배열의 index값이 예측이 안되는 경우, 동적 메모리 할당을 통해서 해결할 수 있다는 점에 있다고 생각한다.

profile
집돌이 FE개발자의 노트

0개의 댓글