我知道有几个线程在问类似的问题,但我找不到解决方案,而且我对 c++ 有点陌生。
我想计算一个 DWORD 数组的长度。所以它只是一个无符号长。
DWORD offsets[] = {0x378, 0x14, 0x0};
这是我对 func 的标题定义:
DWORD allocateAddress(DWORD, DWORD[]);
这是在 cpp 函数内部:
DWORD Window::allocateAddress(DWORD baseAddress, DWORD offsets[])
{
DWORD buffer;
DWORD pointer;
int level = 3; // Length of offset array should be calculated here.
for (int c = 0; c < level; c++)
{
if (c == 0)
{
buffer = this->read(baseAddress);
}
pointer = buffer + offsets[c];
buffer = this->read(pointer);
}
return pointer;
}
这就是我计算长度的方式:
sizeof(offset) / sizeof(*offset) // or sizeof(offset[0])
如果我在 allocateAddress 函数中这样做,我只会得到 4 个字节。在 main 方法中测试它返回 12 个字节,这是我想要的值。
std::cout << sizeof(Address::offset) << std::endl;
为什么我得到一维 DWORD 的大小?=(