我需要智能指针类或模板,它可以在“删除”发生后使其引用对象无效。关键是使指针在多线程应用程序的调试中可用。
这是一个例子,只是伪代码:
void foo1(smart_ptr<myclass> ptr)
{
//some code
delete ptr;
//some other code
}
void foo2(smart_ptr<myclass> ptr)
{
//some code
function_wich_uses_ptr(ptr);
//some other code
}
int main()
{
myclass val = new myclass();
smart_ptr<myclass> ptr(&val);
//somehow make a copy of ptr
smart_ptr<myclass> ptr2(ptr);
//some code
thread_start(foo1, ptr);
thread_start(foo2, ptr2);
//
return 0;
}
所以,我需要foo2以某种方式跟踪foo1是否已经删除了引用ptr的对象。 通常情况下 - 在任何“生活”智能指针到单个对象的任何人删除该对象后,所有其他指向同一对象的指针应该以某种方式'感觉'并将其自己的值设置为NULL。
UPD 我的不好,示例不正确