|
20驿站币
本帖最后由 hahacker 于 2018-1-6 18:54 编辑
- #include "stdafx.h"
- #include "windows.h"
- DWORD dHexaddress[10] = {0};
- int x = 0;
- void * test()
- {
- ........
- ........
- if (find_location != -1)
- { //这里一共调用了两次
- void *p = lpAddress + find_location;
- dHexaddress[x] = *(DWORD*)&p;
- x++;
- }
- .......
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- printf("x = %d\n", x);
- for (int i = 0; i < 10; i++)
- {
- if (dHexaddress[i] != 0)
- {
- printf("dHexaddress[%d] = %d\n", i,dHexaddress[i]);
- }
- }
- return 0;
- }
复制代码
main函数里,x应该是2,但是结果不是这个2,而且数组里面应该是两个不等于0值啊,但是结果输出了10个值。不知道为什么这样。。。
x = 40744719
dHexaddress[0] = 268482584
dHexaddress[1] = 1799880704
dHexaddress[2] = 55057663
dHexaddress[3] = -2056908679
dHexaddress[4] = -1156942841
dHexaddress[5] = -1073741772
dHexaddress[6] = 80105
dHexaddress[7] = -1223737088
dHexaddress[8] = 62538225
dHexaddress[9] = 1140850688
请按任意键继续. . .
应该是溢出了,,另外问老大个问题,
char data[x] = {0}
这个x值最大能定义多大???好像定义1百万都没有问题,有最大值吗?
|
最佳答案
查看完整内容
肯定有个上限,整个进程的地址空间是一定的,所以你这块也不可能无限制的大。
上一篇: VC驿站VIP之C++远控班的客户端与服务端连接(2)下一篇: 不知道问题出在那里
|