2014-10-09 31 views
-1

我有兩個類C1和C2。兩者都從Thread類繼承(使用POSIX)。我基於某些套接字請求在C1中調用特定函數。我做了以下內容:使用POSIX回收C++中的線程內存

C1.cpp:

C2 *c2 = new C2(); 

if (c2->MyFunction())  // MyFunction will start thread, run and do some database activity ,ftp ..etc 
{ 
    cout << "success"; 
    enter code here 
} 
else 
{ 
    cout << "failed"; 
} 

我怎麼在這裏開墾c2的記憶是什麼?

+0

一個類不能是多線程的。這是沒有意義的。這就像說你有一個左翼蘋果樹。 – 2014-10-09 10:23:24

+0

Kerrek,我已經修改了我的陳述 – Anand 2014-10-09 10:29:10

+2

_「如何在這裏回收'c2'內存?」_'delete c2;'?在C++中使用'delete',即'delete c2'回收資源時使用 – 2014-10-09 10:47:09

回答

2

簡單:

void C2::ThreadMain() 
{ 
    // .... 
    delete this; 
    return; 
} 

要小心,因爲C2線程是一個實現細節,其他代碼不應假設有關C2對象的生存東西。

+0

請問您能否提出一些建議。什麼是ThreadMain?那是C班? ..etc – Anand 2014-10-09 12:08:58

+0

'C2 :: ThreadMain()'是由你提到的線程直接運行的函數。 'C'是一個錯字,現在已經修好了。 – MSalters 2014-10-09 12:27:24