关于共享程序段

yingkou 2004-12-11 09:15:07
这一段时间在写一个全局的钩子,在共享程序段内设置了一些变量,这些变量也全部是static且初始化了,后来经过很多次的测试发现,其中一个整形变量在其中的几台机器上不知道运行到什么时候或者遇到什么情况会自己发生变化。可以肯定地是无论DLL内部还是调用对他的修改都没有错误,这个是通过写入日志知道的。有谁遇到过这样的问题吗?
...全文
194 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingkou 2004-12-13
  • 打赏
  • 举报
回复
楼上的各位大侠我的共享程序段内的变量定义如下:// 共享数据段:所有类型的变量必须初始化而且变量必须是定长的
#pragma data_seg(".MYDATA")

static HINSTANCE hins=NULL;
static HWND hCallHook=NULL;
static HHOOK hkbGetMsg=NULL;
static HHOOK hkbCBT=NULL;
static HHOOK hkbShell=NULL;
static int LogCount=0;
static LOGRECORD m_LogRecordArray[5]={{"",1,"",2,"",3,"",4,""},{"",1,"",2,"",3,"",4,""},{"",1,"",2,"",3,"",4,""},{"",1,"",2,"",3,"",4,""},{"",1,"",2,"",3,"",4,""}};

static char m_gAppPath[MAX_PATH]="";
static CSemaphore m_gSemaphore;
static int timespan=60;
static int nTotalIdleTime=0;
static UINT uIdleTimer=0;

static BOOL IsDeleted=FALSE;
static char strFileName[MAX_PATH] ="";

static BOOL IsHook=FALSE;
static int g_PeekStatus = PEEK_NORMAL;

static int g_HostTimeSpan=0;//就是这两个变量
static int g_HostTimeSpanTMP=0;//自己发生变化了

static WORKTIME g_WorkTime={0,1,1,"","",1,"","",1,"",""};

#pragma data_seg()
#pragma comment(linker,"/SECTION:.MYDATA,RWS")
在32位机器里面对共享程序段的大小好像没有限制呀?有限制的是16位机呀
skfox 2004-12-12
  • 打赏
  • 举报
回复
这些变量也全部是static且初始化

你初始化为什么?如果是一个非常量就会有问题啊,比如是一个函数的返回值等等。。。如time(0),我就遇到过这种情况,它的值是随时变化的
漂流的代码 2004-12-12
  • 打赏
  • 举报
回复
会不会是内存溢出造成的?
EagleTwenty 2004-12-12
  • 打赏
  • 举报
回复
发个代码给我们看看吧.
BigFanOfCpp 2004-12-11
  • 打赏
  • 举报
回复
没有遇到过,帮你顶。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧