728x90
C++에서 메모리 관리의 중요성과 힙(heap)과 스택(stack)의 차이
1. 메모리 관리의 중요성
- 프로그램이 제대로 실행되기 위해서는 모든 변수의 주소값이 컴파일 시에 확정되어야 합니다.
- 그러나 이러한 방식은 프로그램에 많은 제약을 주기 때문에, 실행 시에 더 유연하게 메모리를 관리할 수 있는 방법이 필요합니다.
2. 스택(Stack)과 힙(Heap)
- 스택:
- 컴파일러에 의해 메모리가 자동으로 관리됩니다.
- 메모리 할당과 해제가 자동으로 이루어지기 때문에 안정성이 보장됩니다.
- 힙:
- 사용자가 직접 메모리를 할당하고 해제해야 하는 공간입니다.
- 메모리를 자유롭게 관리할 수 있지만, 잘못된 관리로 인해 메모리 누수나 오류가 발생할 수 있습니다.
3. C 언어에서의 메모리 관리
- C에서는 malloc과 free 함수를 사용하여 힙에서 메모리를 할당하고 해제합니다.
- malloc(size_t size): 지정한 크기만큼의 메모리를 할당합니다.
- free(void* ptr): 할당된 메모리를 해제합니다.
4. C++에서의 메모리 관리
- C++에서는 new와 delete 연산자를 사용하여 메모리를 할당하고 해제합니다.
- new:
- C의 malloc에 대응됩니다.
- 객체의 생성과 메모리 할당을 동시에 수행하며, 생성자(constructor)를 호출합니다.
- 예: int* p = new int;
- delete:
- C의 free에 대응됩니다.
- 할당된 메모리를 해제하고, 소멸자(destructor)를 호출합니다.
- 예: delete p;
- new:
결론
- C++에서는 new와 delete를 사용하여 메모리를 관리하는 것이 권장됩니다. 이는 객체 지향 프로그래밍의 특성을 반영하여 생성자와 소멸자를 통해 객체의 생명 주기를 관리할 수 있게 해줍니다.
- 메모리를 적절히 관리하지 않을 경우, 메모리 누수와 같은 문제가 발생할 수 있으므로 주의가 필요
728x90
'반도체 > C++' 카테고리의 다른 글
33. C++의 GET & SET (1) | 2024.09.03 |
---|---|
32. C++에서의 객체지향 (0) | 2024.08.30 |
30. C++ 스레드 생성 방법 (0) | 2024.08.30 |
29. C++의 스레드 개념 (0) | 2024.08.30 |
28. C++에서 사용하는 함수들 (1) | 2024.08.20 |