본문 바로가기
카테고리 없음

메모리 동적 할당 (new, delete)

by kangs' tong 2023. 10. 9.

메모리 동적 할당 (new, delete)

메모리 동적 할당은 프로그램이 실행 중에 필요한 메모리를 동적으로 할당하고 해제하는 과정을 말합니다. 메모리 동적 할당은 C++에서 new와 delete 연산자를 사용하여 수행됩니다. 이 포스팅에서는 new와 delete의 사용 방법과 작동 원리에 대해서 자세히 알아보겠습니다.

new 연산자

new 연산자는 메모리 동적 할당을 위해 사용되는 C++의 특별한 연산자입니다. new 연산자를 사용하면 메모리 공간이 필요한 객체를 위해 힙(heap)에 메모리를 할당할 수 있습니다. new 연산자를 사용하는 방법은 다음과 같습니다:

// 객체 동적 할당 예시
int* ptr = new int;  // int 타입 객체를 위한 메모리 할당
float* arr = new float[5];  // float 타입 배열을 위한 메모리 할당

위 코드에서는 int 타입의 객체를 위한 메모리 공간을 할당하고, float 타입의 배열을 위한 메모리 공간을 할당하는 예시입니다. new 연산자는 객체 타입과 배열 타입 모두에 사용할 수 있습니다.

delete 연산자

delete 연산자는 new 연산자로 할당한 메모리를 해제하기 위해 사용됩니다. new로 할당한 메모리는 delete를 사용하여 명시적으로 해제해야 합니다. delete 연산자를 사용하는 방법은 다음과 같습니다:

// 객체 동적 할당 해제 예시
delete ptr;  // int 타입 객체를 위한 메모리 해제
delete[] arr;  // float 타입 배열을 위한 메모리 해제

위 코드에서는 int 타입의 객체를 위해 할당한 메모리를 해제하고, float 타입의 배열을 위해 할당한 메모리를 해제하는 예시입니다. delete 연산자로 메모리를 해제할 때에는 단일 객체 또는 배열에 맞게 delete 또는 delete[]를 사용해야 합니다.

작동 원리

new 연산자가 호출되면, 운영체제는 힙에서 요청한 크기에 맞는 메모리 공간을 할당합니다. 할당된 메모리 공간의 주소를 가리키는 포인터가 반환되고, 이 포인터는 변수에 저장됩니다.

delete 연산자가 호출되면, 해당 포인터가 가리키는 메모리 공간이 해제됩니다. 이 때 메모리 공간은 다른 용도로 사용될 수 있습니다. delete 연산자가 호출되면 포인터는 더 이상 유효하지 않으므로, 반드시 다시 초기화해주어야 합니다.

전체 내용 정리

메모리 동적 할당은 프로그램이 실행 중인 동안 필요한 메모리를 동적으로 할당하고 해제하는 기능을 제공합니다. C++에서는 new와 delete 연산자를 사용하여 메모리 동적 할당을 수행합니다. new 연산자는 메모리 할당을 위해 사용되고, delete 연산자는 메모리 해제를 위해 사용됩니다.

new 연산자를 사용하여 메모리를 할당할 때에는 변수 타입과 배열 타입을 고려하여 사용해야 합니다. delete 연산자로 메모리를 해제할 때에는 단일 객체 또는 배열에 맞게 delete 또는 delete[]를 사용해야 합니다.

메모리 동적 할당은 프로그램의 효율성과 유연성을 향상시키는데 도움을 줄 수 있으므로, 적절하게 활용하는 것이 중요합니다.

댓글