Resource Management using auto_ptr - Intro
Posted on August 19th, 2007 at 2:14 by fr3@K

周五下午在新上任的工作進行了第一次面試. 被面試的這位應徵者 (就稱為 A 君吧) 已有三年以上在工作上使用 C++ 的經驗, 對自己的 C++ 能力的評比給的是熟悉 (還沒到精通) . 在聊了可能一個鐘頭左右後, 他表示自己寫程式很少發生 memory leak, 卻又舉例不出具體作法, 只表示這是經驗與習慣使然. 針對這點, 我在白板上出了個題目:

    class foo {};
    class bar
    {
      foo* fp_;
    public:
      bar(foo* fp)
      : fp_(fp)
      {
        // ....
      }
      ~bar()
      {
        delete fp_;
      }
    };
    
    bar* create_bar()
    {
      foo* fp = new foo;
      return new bar(fp);
    }
    

    假設你是負責維護 create_bar 的 programmer. 並且, 呼叫 create_bar 的使用者一定會記得 delete 掉被該 function new 出來的 instance . 請問 create_bar 這個函數有沒有潛在的 leak? 如果有, 可以如何改善?

(more…)

del.icio.us:Resource Management using auto_ptr - Intro digg:Resource Management using auto_ptr - Intro spurl:Resource Management using auto_ptr - Intro newsvine:Resource Management using auto_ptr - Intro furl:Resource Management using auto_ptr - Intro Y!:Resource Management using auto_ptr - Intro 黑米共享書籤:Resource Management using auto_ptr - Intro 推推王:Resource Management using auto_ptr - Intro