提问人:OOM 提问时间:8/29/2019 最后编辑:Uwe KeimOOM 更新时间:8/29/2019 访问量:50
Windows API SIZE_T在内存和控制台中不显示相同的值
Windows api SIZE_T don't show same value in memory and in console
问:
我正在尝试处理 Windows.h 结构中的SIZE_T变量,但返回的值存在问题。
我不明白为什么内存和输出之间会有所不同。
我应该使用控制台中显示的值在内存中工作,这不太有趣。然后我被困住了。
介绍
我尝试了一些测试,看看它是否正常。
法典:
SIZE_T aaa = 10000;
std::cout << "The aaa value is : " << aaa << std::endl;
输出:
The aaa value is : 2710
我试图强制强制转换以查看内存中的值是否会更改
int a = (int)aaa;
unsigned int b = (unsigned int)aaa;
long c = (long)aaa;
unsigned long d = (unsigned long)aaa;
但仍然相同,该值在内存中保持不变 (10000)。
主要问题
法典:
SIZE_T val;
WindowsFunct(&val); //val get 65536 in memory
std::cout << "The val is : " << val << std::endl;
输出:
The val is : 10000 //The value that i would deal with in my program
那么,它们是否是一种在内存中获取所显示值的方法?
编辑:原文代码:
MEMORY_BASIC_INFORMATION mbi;
LPVOID mainModuleAddr = (LPVOID)GetModuleHandle(NULL);
VirtualQuery(mainModuleAddr, &mbi, sizeof(mbi));
std::cout << "Main module Region Size: " << mbi.RegionSize << std::endl;
答:
3赞
SoronelHaetir
8/29/2019
#1
您的 2710 输出是因为您在某个时候将 std::hex iomanip 喂给了 cout。10000 == 0x2710。
如果您使用 std::d ec iomanip,它将显示为 10000。
std::cout << "The aaa value is : " << std::dec << aaa << std::endl;
评论