1:__cdecl成員函式 通過ecx傳遞this指標
mov ecx, 物件的位址
call 成員函式
2:__stdcall成員函式 通過堆疊傳遞this指標
push 物件的位址
call 成員函式
用非靜態成員作為執行緒函式
原理分析:
1.該執行緒的主函式為類的非靜態成員函式,所以它認為他的呼叫者會為他傳遞乙個this指標,通過堆疊傳遞.因為__stdcall的函式
2.而作業系統認為的執行緒主函式只有乙個引數通過堆疊傳遞.
所以執行緒的this指標被&b覆蓋了,剛好把非靜態成員函式作為執行緒主函式
class cobject ;
dword winapi threadfuc() ;
private:
int m_ndata; };
typedef dword ( cobject::*mythread)(
lpvoid lpthreadparameter );
int main(int argc, char** argv)
關於指標傳遞和指標的引用傳遞
指標傳遞的實質 指標傳遞引數本質上是值傳遞的方式,它所傳遞的是乙個位址值。值傳遞過程中,被調函式的形式引數作為被調函式的區域性變數處理,即在棧中開闢了記憶體空間以存放由主調函式放進來的實參的值,從而成為了實參的乙個副本。引用傳遞的實質 在引用傳遞過程中,被調函式的形式引數雖然也作為區域性變數在棧中開...
關於指標傳遞和指標的指標
一開始沒有理解,導致對這個概念非常的模糊和不解。最近看完 徹底搞定c語言指標詳解 裡面關於指標的指標的解釋有了頓悟感。其實,很好理解,是我把它想複雜了。我們都知道,實參和形參的區別。形參並無法改變實參,這就是值傳遞。還有一種叫指標傳遞,實質就是去操作指標的指向物件。例子如下 exchg2 int p...
關於指標傳遞的實驗
int main int argc,char ar void resnet int p std cout p的位址 p 1.定義形參為i,在傳入函式之前值為100,位址為fd04,2.將i的位址作為引數傳入形參 p,此時拷貝的是i的位址 值傳遞拷貝的是i的值 將i的位址拷貝過來以後p就是i的位址了即...