보통 로그를 관리하는 Log 클래스와 어플을 관리하는 App 클래스는 Singleton pattern으로 하나만 생성해서 사용하는 것이 일반적인 경우가 있습니다. 이러한 경우, Singleton 객체간의 의존선이 존재할 때, 나중에 프로그램이 종료될 때 예상치 못한 에러가 야기될 수 있습니다. 아래 코드를 보고 프로그램 종료시 에러가 왜 나는지 예측해 보세요. ^^


http://www.gilgil.net/10260


#include <stdio.h>
#include <string.h>

class Log
{
  FILE* fp;
private:
  Log()
  { 
    fp = fopen("test.log", "wb");
  }
  virtual ~Log()
  {
    fclose(fp);
    fp = NULL;
  }
public:
  void write(const char* msg)
  {
    fwrite(msg, 1, strlen(msg), fp);
  };
public:
  static Log& instance()
  {
    static Log g_log;
    return g_log;
  }
};

class App
{
private:
  App()
  {
    //Log::instance().write("App::Appn");
  }
  virtual ~App()
  {
    Log::instance().write("App::~Appn");
  }
public:
  void start() {
    Log::instance().write("App::startn");
  }
  static App& instance()
  {
    static App g_app;
    return g_app;
  }
};

int main()
{
  App::instance().start();
  return 0;
}



번호 제목 글쓴이 날짜 조회 수
공지 [공지] IAMROOT 19차 커널 스터디 오리엔테이션 (zoom 접속 안내) [5] 문c(문영일) 2022.05.07 867
공지 [공지] IAMROOT 18차 커널 스터디 오리엔테이션 안내 [마감] [2] 문c(문영일) 2021.05.17 1245
공지 커널 스터디를 위한 문c 가이드입니다. [10] 문c(문영일) 2021.04.27 6370
1016 ARM System Developer's Guide 학습 범위 [7] woos 2013.05.19 6384
1015 안녕하세요 [6] 김종화 2007.03.05 6381
1014 홈페이지 개선 사항 좀 알려주세요. [6] 백창우 2011.08.08 6378
1013 [소개]안녕하세요 황이루 2007.10.25 6334
1012 혼자 공부하기 너무 힘드네요.. [1] 지승화 2011.08.07 6323
1011 첫모임에 관해. [2] 백창우 2010.03.28 6318
1010 멤버 정리한번 해야될것 같습니다. [6] 백창우 2007.06.08 6315
» 프로그램을 종료할 때 왜 에러가 나는지 원인을 찾아 보세요. [14] 이경문 2011.10.09 6314
1008 워크홀릭인지 미친건지... [4] 정현철 2011.08.02 6301
1007 XEN 한번 토론해봅시다. [4] 백창우 2009.01.05 6291
1006 32비트와 64비트에 대한 차이점 [4] 김기오 2008.02.26 6263
1005 커널 스터디에 처음 참석하시는 분들 꼭 확인하세요. 원민수 2008.08.18 6257
1004 Linux 2.6.36-rc1 [3] 김남형 2010.08.16 6237
1003 Hypervisor 개발 프로젝트 문닫겠습니다. :) [6] 백창우 2008.12.08 6195
1002 [구인] Redhat Linux OS 기술 지원 ( 클러스터링, 공유파일 시스템 ) 최홍식 2012.01.06 6193
1001 새로운 서버가 설치 되었습니다. [14] 백창우 2008.01.16 6190
1000 입금확인 [16] 백창우 2009.03.23 6160
999 축배를 만들었습니다. [9] 백창우 2007.02.26 6130
998 세미나 개최건 [18] 백창우 2009.02.06 6121
XE Login