Ниже приведен набросок того, как у меня может быть какая-то форма автоматического управления памятью в 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;
..
}
Таким образом, конечный пользователь никогда не должен вызывать new или malloc и вместо этого может вызватьObj.newObj (..).
Тем не менее, я довольно озадачен тем, как я могу сделать что-то подобное для C.
Это не обязательно должно быть так же, как описано выше, ноя не хочу заботиться об управлении памятью, когда это не важно.
Самая большая проблема, которую я чувствую, заключается в том, что когда переменная в C выходит из области видимости, у меня нет'деструктор', о котором можно сообщить, чтобы сообщить, что переменная вышла из области видимости.