C 동적 메모리 2













YOUR LINK HERE:


http://youtube.com/watch?v=MbqfMHaYMFM



C++는 동적 메모리 할당과 해제를 위한 특별한 키워드인 new와 delete을 제공합니다. 정적 메모리(static memory)는 실행 전에 메모리가 할당되며, 동적 메모리(dynamic memory)는 실행이 되어야만(실행 시간(runtime)에만) 메모리가 할당됩니다. • 1. 객체에 메모리를 할당할 때는 new, 해제시킬 때는 delete을 사용: 예) MyClass* pClass = new MyClass; delete pClass; • 할당한 동적 메모리는 포인터(pointer)에 저장 • new는 힙(heap: 낮은 주소에 만든 자료 구조)에 동적 메모리를 할당 • 배열: int* ptr = new int[10]; delete [] ptr; • 우리가 만든 클래스도 new, delete를 이용해 동적 메모리 할당과 해제를 할 수 있음 • 클래스로 만든 인스턴스의 포인터는 this: 클래스 정의 안에서 현재 인스턴스에 접근하고 싶으면 this를 사용 • 메모리 할당하며 초기화: int* ptr = new int{10} 혹은 int* ptr = new int(10); 배열은 int[] ptr = new int[5]{10}만 허용 • 범위 기반 반복문은 사용 불가(range-based for loop): 실행 시간에 메모리 크기가 결정되어서 사용이 불가능함 • 2. 스마트 포인터: 동적 메모리를 할당해주면, 객체가 소멸될 때 unique_ptr의 소멸자가 호출되어 할당한 메모리를 저절로 해제 • 필요한 헤더 파일: <memory> • 자료형 예시: unique_ptr<int> ptr(new int); *ptr = 10; • 배열 예시: unique_ptr<int[]> ptr(new int[10]); ptr[0] = 1; • 메모리 할당하며 초기화: unique_ptr<int> ptr(new int{10}) 혹은 unique_ptr<int> ptr(new int(10)); 배열은 unique_ptr<int[]> ptr(new int[5]{10})만 허용 • 메모리를 강제로 해제: 예) unique_ptr <int> ptr(new int); ptr.release(); // 메모리 해제시 ptr은 nullptr로 설정됨 • 메모리 교체: 예) unique_ptr <int> ptr; ptr.reset(new int); // 기존 메모리를 자동적으로 해제하고 현재 메모리를 new int로 다시 설정 • 3. const 상수 선언 • 포인터 앞에 const를 쓰면 값을 변경 불가능: 예) const int* ptr; • 포인터 뒤에 쓰는 const는 포인터를 변경하지 못한다는 뜻: 예) int* const ptr2= ptr1; • 멤버 함수 선언 뒤에 const를 쓰면 멤버 변수를 변경하지 않는 함수란 뜻 • 4. 정적 멤버(static member) • 정적 멤버를 클래스에 하나만 생성됨; 하나만 만들어져서 전체 코드 기준으로 메모리가 절약됨 • 멤버 선언 앞에 static을 붙여줌: 예) static int i = 10; static double calc(void) {...} • 정적 상수: 정적 멤버이며 상수; 예) static const int i = 10; 혹은 const static int i = 10; • 접근 방법: 클래스명::멤버명 • 정적 프로퍼티는 클래스 안에 선언하고, 정의는 소스 파일에 함: 예) int MyClass::var = 10; • [소스 코드 - TestMemory] • https://github.com/mokwongame/CPP_202... (GitHub 소스 코드) • [오늘의 C++ 문법] • 1. 핸들(handle) • 핸들은 객체를 가리키는 포인터(pointer); 이때 객체는 우리가 만들지 않은 외부 시스템의 객체를 의미함 • 우리가 자주 쓰는 cout의 핸들은 HANDLE hnl = ::GetStdHandle(STD_OUTPUT_HANDLE)로 얻음; 필요한 헤더 파일: <Windows.h> • [참고문헌] • 1. 천인국, 어서와 C++는 처음이지!, 인피니티북스, 2023. • [Acknowledgement] • 1. Image by Freepik: https://www.freepik.com/free-vector/m... • 2. Image by kjpargeter on Freepik: https://www.freepik.com/free-photo/3d...

#############################









Content Report
Youtor.org / YTube video Downloader © 2025

created by www.youtor.org