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年 任何解决方案?
答案 0 :(得分:1)
机器上的指针宽度为4个字节。如果要获取指针指向的对象的大小,则必须取消引用它:
long iSize = sizeof(tData); // Gets size of pointer = 4
iSize = sizeof(*tData); // Gets size of pointed object, which is sizeof(void), which is implementation defined
不幸的是,取消引用void *
对你来说并不是很有用,因为它的实现是定义的(或未定义的),即使定义它也无法帮助你获得字节数组的大小。