在網(wǎng)上,看到一個(gè)問題 “什么是全局變量?”說實(shí)話,這個(gè)問題我想了一會(huì)兒。覺得有二義性,可能大部分人會(huì)說,只要是在堆棧外面定義的 就是全局。 我覺得,全局這個(gè)概念,我想反問提問者,是線程全局?進(jìn)程全局? 好吧,我今天想說說后者的。其實(shí),在寫hook的時(shí)候,大家都知道,進(jìn)程需要共享dll中的全局變量。沒錯(cuò),就是它,我覺得被進(jìn)程共享的 才叫全局。
- #pragma comment (linker, "/SECTION:GlobalValue,RWS")
-
- #include <iostream>
-
- #pragma data_seg("GlobalValue")
- int g_iCnt = 1000;
- #pragma data_seg()
-
- int PlusShow()
- {
- return printf("PlusShow %d",++g_iCnt);
- }
-
- int Show()
- {
- return printf("Show %d",g_iCnt);
- }
-
- int main(int argc)
- {
- if(argc < 2)
- {
- return Show();
- }
-
- PlusShow();
- getchar();
- return 0;
- }
#pragma comment (linker, "/SECTION:GlobalValue,TBRWS")
#include <iostream>
#pragma data_seg("GlobalValue")
int g_iCnt = 1000;
#pragma data_seg()
int PlusShow()
{
return printf("PlusShow %d",++g_iCnt);
}
int Show()
{
return printf("Show %d",g_iCnt);
}
int main(int argc)
{
if(argc < 2)
{
return Show();
}
PlusShow();
getchar();
return 0;
}
其實(shí) 不同段放的 不僅僅是變量。可以是函數(shù) 或者對(duì)象,非常靈活。看你自己怎么用了:)