반도체/C++

31. C++에서 메모리 관리의 중요성과 힙(heap)과 스택(stack)의 차이

Clair_de_Lune 2024. 8. 30. 16:55
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;

결론

  • 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