목록2024/11/18 (3)
센로그
여러 가지 유닉스 명령을 파이프라인으로 조합하는 방식으로 복잡한 분석 작업을 간단히 처리할 수 있다.디버깅 과정에서 다루는 데이터는 대부분 텍스트 포맷으로 되어 있기 때문에 사용하는 도구의 표준 입력으로 데이터를 그대로 전달할 수 있다.텍스트를 분석할 때 여러 유닉스 명령을 파이프라인으로 조합하여 사용한다.일반적으로 다음 순서로 스크립트를 작성하면 된다.가져오기(Fetching)선택하기(Selecting)처리하기(Processing)정리하기(Summarizing) 자주 쓰이는 유닉스 명령어grep:텍스트 파일에서 특정 문자열 또는 패턴을 검색하고 일치하는 줄을 출력find:디렉터리 트리에서 파일이나 디렉터리를 이름, 크기, 수정 시간 등 다양한 조건으로 검색awk:텍스트 데이터를 행(row)과 열(col..

delete는 항상 호출될 것인가?class Investment { ... };Investment* createInvestment(); // Investment 계통에 속한 클래스의 객체를 동적할당하고 그 포인터를 반환void f() { Investment* pInv = createInvestment(); ... delete pInv;};이 코드에서 delete pInv; 가 항상 호출될 것이라고 믿으면 안된다.... 부분에 return 문이 있다면?... 부분에서 예외가 던져진다면?delete 문이 실행되지 않게 된다면, 객체를 담고 있는 메모리가 누출되며, 객체가 갖고 있던 자원도 모두 누수된다. 자원이 항상 해제되도록 만들 수는 없을까?자원을 객체에 넣고, 그 자원 해제를 소멸자가..
커스텀 복사 생성자 및 복사 대입 연산자 구현 시 주의할 점모든 데이터 멤버들을 빠짐없이 복사해야 한다.빠진 요소가 있더라도 컴파일러가 친절하게 알려주지는 않는다. 예시 상황1. 고객을 나타내는 Customer 클래스가 있다.void logCall(const string& funcName);class Customer {public: ... Customer(const Customer& rhs); Customer& operator=(const Customer& rhs); ...private: string name;};Customer::Customer(const Customer& rhs) : name(rhs.name) { logCall("Customer Copy Construc..