關於this指標的傳遞問題總結

2021-08-09 03:59:21 字數 545 閱讀 8069

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的位址了即...