#include <iostream>
using namespace std;
class MyClass {
private:
int* ptr;
public:
// 생성자
MyClass() {
ptr = new int(10); // 동적 메모리 할당
cout << "메모리 할당 완료!" << endl;
}
// 소멸자
~MyClass() {
}
void print() const {
cout << "값: " << *ptr << endl;
}
};
int main() {
MyClass obj;
obj.print();
// main 함수 종료
return 0;
}

간단한 문제로,
메인 함수가 종료되고 클래스가 소멸할 때
소멸자에서 ptr 포인터를 delete 해주지 않기 때문에 메모리 누수가 발생한다.
Info Warning Error 로 분류되어 기록되며[Info] 메시지[Warning] 메시지[Error] 메시지2) 로그 기록기는 단 하나의 인스턴스만 존재해야 하며,
unique_ptr 을 통해 이를 보장할 것
3) 지금까지 기록된 로그의 총 수를 출력 가능

#include <iostream>
#include <string>
using namespace std;
class Logger {
private:
int logCount;
public:
Logger() : logCount(0) {};
void logInfo(string message) {
cout << "[Info]: " << message << endl;
logCount++;
}
void logWarning(string message) {
cout << "[Warning]: " << message << endl;
logCount++;
}
void logError(string message) {
cout << "[Error]: " << message << endl;
logCount++;
}
void showTotalLogs() {
cout << "Total logs recorded: " << logCount << endl;
}
~Logger() {
cout << "Logger instance destroyed." << endl;
}
};
int main() {
unique_ptr<Logger> logProgram = make_unique<Logger>();
logProgram->logInfo("System is starting.");
logProgram->logWarning("Low disk space.");
logProgram->logError("Unable to connect to server.");
logProgram->showTotalLogs();
// 자동 delete
return 0;
}
