我想从XPCOM Component创建一个线程... 这是
的代码nsresult rv = NS_OK;
nsCOMPtr<Callback> obj = do_CreateInstance("@jscallback.p2psearch.com/f2f;1", &rv);
NS_ENSURE_SUCCESS(rv, rv);
char* str="Hello from C++";
obj->Status(str);
_beginthread( (void(*)(void* ))&(P2P::test), 0,obj);
return NS_OK;//obj->Status(str);
这是一个线程函数
当我在调用线程之前调用函数它可以工作但是当我写一些像obj->Status(temp);
这样的函数时,Firefox崩溃了
class P2P{
static char RecvBuf[1024];
public:
static void test(Callback* obj){
// char* temp="Hellllllooo";
// obj->Status(temp);
return;
}
};
答案 0 :(得分:1)
当开始线程的代码超出范围时,nsCOMPtr将释放该对象,将其引用计数设置为零。此时,该对象将被删除。在你超出范围之前你需要调用NS_ADDREF(当你完成它之后一定要调用NS_RELEASE,这样你就不会泄漏!)。