我的搜索 foo 今天似乎缺少。
我想知道根据 std C++ 通过 (unsigned(?)) char* 检查“任何”内存位置是否合法。任何位置是指程序内对象或数组(或数组内)的任何有效地址。
例如:
void passAnyObjectOrArrayOrSomethingElseValid(void* pObj) {
unsigned char* pMemory = static_cast<unsigned char*>(pObj)
MyTypeIdentifyier x = tryToFigureOutWhatThisIs(pMemory);
}
免责声明:这个问题纯粹是学术性的。我不打算把它放到生产代码中!合法我的意思是如果根据标准它真的是合法的,那就是它是否适用于所有实现的 100%。(不仅仅是在 x86 或一些常见的硬件上。)
子问题:static_cast
从 void* 地址到 char* 指针的正确工具是什么?