HOWTO resolve circular references in ns-3 memory disposal: Difference between revisions
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
== HOWTO resolve smart pointer circular references in ns-3 memory disposal == | == HOWTO resolve smart pointer circular references in ns-3 memory disposal == | ||
class A : public Object | class A : public Object | ||
{ | { | ||
public: | public: | ||
static TypeId GetTypeId (void); | |||
void CallbackMethodA(); | |||
Callback<void> m_callback; | |||
}; | |||
class B : public Object | |||
{ | |||
public: | |||
static TypeId GetTypeId (void); | |||
void CallbackMethodB(); | |||
Callback<void> m_callback; | |||
}; | |||
int main(int argc, char* argv[]) | |||
{ | |||
Ptr\lA\g a = CreateObject<A>(); | |||
int main(int argc, char* argv[]) | |||
{ | |||
Ptr<B> b = CreateObject<B>(); | Ptr<B> b = CreateObject<B>(); | ||
Revision as of 16:43, 30 August 2013
HOWTO resolve smart pointer circular references in ns-3 memory disposal
class A : public Object { public: static TypeId GetTypeId (void); void CallbackMethodA(); Callback<void> m_callback; }; class B : public Object { public: static TypeId GetTypeId (void); void CallbackMethodB(); Callback<void> m_callback; };
int main(int argc, char* argv[]) { Ptr\lA\g a = CreateObject<A>();
Ptr b = CreateObject();
a->m_callback = MakeCallback (&B::CallbackMethodB, b); b->m_callback = MakeCallback (&A::CallbackMethodA, a); }
or
int main(int argc, char* argv[]) { Ptr<A> a = CreateObject<A>(); Ptr b = CreateObject();
a->m_callback = MakeCallback (&B::CallbackMethodB, b); b->AggregateObject(a); }
==15749== LEAK SUMMARY: ==15749== definitely lost: 40 bytes in 1 blocks ==15749== indirectly lost: 152 bytes in 5 blocks ==15749== possibly lost: 0 bytes in 0 blocks ==15749== still reachable: 10,360 bytes in 5 blocks ==15749== suppressed: 0 bytes in 0 blocks