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;

你的 2710 输出是因为在某些时候你已经将 std::hex iomanip 提供给 cout。 10000 == 0x2710.

如果您使用 std::dec iomanip,它将显示为 10000。

std::cout << "The aaa value is : " << std::dec << aaa << std::endl;