c++ - sizeof 没有返回正确大小的 LPVOID 变量

标签 c++ visual-c++

<分区>

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 字节宽。如果你想获得指针指向的对象的大小,你必须取消引用它:

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 * 对您来说不是很有用,因为它的实现已定义(或未定义),即使它已定义,也无法帮助您获取字节数组的大小。

关于c++ - sizeof 没有返回正确大小的 LPVOID 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25210700/

相关文章:

c++ - 为什么我的链表 "next"指针解引用到错误的内存(XCode,C++)

c++ - 检查鼠标是否在旋转的 Sprite 上方? C++

使用 decltype 和 constness 的 C++11 尾随返回成员函数

.net - 将标准 C++ 嵌入到 .NET 应用程序中

c++ - MSVC++中使用模板类成员实例化模板默认参数

c++ - 使用 Visual C++ 2015 工具集构建 Windows/Windows Phone 8.1

c++ - 如何为结构成员分配其他函数返回的值?

c++ - 如何在不要求客户安装的情况下编译PCAP程序

c++ - 从 Visual C++ 资源文件获取 FILEVERSION

c++ - 指向共享对象的指针数组