在网上,看到一个问题 “什么是全局变量?”说实话,这个问题我想了一会儿。觉得有二义性,可能大部分人会说,只要是在堆栈外面定义的 就是全局。 我觉得,全局这个概念,我想反问提问者,是线程全局?进程全局? 好吧,我今天想说说后者的。其实,在写hook的时候,大家都知道,进程需要共享dll中的全局变量。没错,就是它,我觉得被进程共享的 才叫全局。
- #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;
}
其实 不同段放的 不仅仅是变量。可以是函数 或者对象,非常灵活。看你自己怎么用了:)