【发布时间】:2014-10-02 08:36:18
【问题描述】:
sizeof 没有返回 tData 指向的数据的大小 我的编译器 Visual Studio C++ 2012
bool FixReloc(LPVOID pModule,LPVOID tData,LPVOID pAddressNew,DWORD pAdrressOld,WORD fImageX64)
{
DWORD iDelta = (DWORD)pAddressNew - pAdrressOld;
long iSize = sizeof (tData);
iSize 是 4,但是当我创建 tData 时,我做到了
byte* tData = new byte[2057];
relocRaw = reinterpret_cast<byte*>(pointerToRawData + (virtualAddressBaseReloc - virtualAddress));
iSize 应该是 2057 有什么解决办法吗?
【问题讨论】:
-
您机器上的指针是 4 字节宽。
-
一旦我们有了指针,就不可能得到 sizeof 缓冲区。 sizeof(LPVOID) == 4(通常);
sizeof(*tData)(在 FixReloc 内部)可以是 0 或 1(未定义)。 -
为什么您认为
sizeof应该这样做?谁教你这么废话的? -
@CaptainObvlious 我没学过 c++ 我自己学过
标签: c++ visual-c++