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? 如果有, 可以如何改善?