직접 new 와 delete를 사용하여 메모리 관리
void f() {
Investment* pInv = createInvestment(); // 동적 할당된 Investment 객체 생성
... // pInv 사용
delete pInv; // 메모리 해제
}
return이 있으면 delete가 실행되지 않음.break나 goto 같은 제어문으로 조기 종료되면 delete를 건너뛸 수 있음.delete를 실행하지 못하고 메모리 누수 발생 가능RAII 원칙?
| RAII의 장점 | 설명 |
|---|---|
| 메모리 누수 방지 | delete를 빼먹어도 객체가 스코프를 벗어나면 자동으로 해제됨. |
| 예외 안전성 (Exception Safety) | 예외가 발생해도 소멸자가 호출되므로 리소스가 자동으로 정리됨. |
| 코드 가독성 향상 | delete 같은 코드가 필요 없으므로 코드가 깔끔해짐. |
| 관리해야 할 코드 감소 | 리소스 정리를 자동화하여 코드 유지보수가 쉬워짐. |
스마트 포인터를 사용하면 해결 가능
💫Things to Remember