【发布时间】:2013-05-17 21:31:04
【问题描述】:
我知道有几个线程在问类似的问题,但我找不到解决方案,而且我对 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 的大小? =(
【问题讨论】:
-
如果你有一个固定大小的数组,使用
std::array。如果没有,请使用std::vector之类的容器。除其他事项外,尺寸被安全地包含供您使用。 -
@chris 谢谢你,我还没有找到这个帖子。