以下是我怎麼可能有某種形式的自動內存管理C++中的草圖:C內存管理
template<class T>
class Ptr{
public:
/* Some memory management stuff (ref counting etc.)
as Ptr object is initialized */
Ptr(...) { .. }
/* Manage reference counts etc.
as Ptr object is copied -- might be necessary
when Ptr is passed to or returned from functions */
Ptr<T>& operator=(..) { .. };
/* Do memory management stuff
when this "Pointer" object is destroyed. */
~Ptr() { .. }
private:
/* Pointer to main object */
T* object;
}
class Obj{
public:
static Ptr<Obj> newObj(..) { return Ptr<Obj>(new Obj(..)); }
private:
/* Hide constructor so it can only be created by newObj */
Obj(..) { .. }
/* some variables for memory management routines */
int refcnt;
..
}
這樣,最終用戶從來沒有打電話給新的或malloc的,而是可以調用Obj.newObj(..)。
不過,我敢對我怎麼可能會做同樣的事情爲C.
難倒它不必完全像上面,但我不想去關心內存管理這並不重要。
我覺得我遇到的最大問題是,當C中的變量超出範圍時,我沒有真正的'析構函數'可以發信號通知我該變量已超出範圍。
你爲什麼要創建自己的智能指針? – delnan
如果你想要智能指針,你不應該使用C. – Pubby