同様の質問をしているスレッドがいくつかあることは知っていますが、解決策を見つけることができず、C ++に少し慣れていません。
DWORD 配列の長さを計算したい。したがって、これは単なる unsigned long です。
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バイトしか取得できません。メイン メソッドでテストすると、必要な値である 12 バイトが返されます。
std::cout << sizeof(Address::offset) << std::endl;
1 次元の DWORD のサイズを取得しているのはなぜですか? =(