【发布时间】:2011-10-01 20:48:12
【问题描述】:
我的搜索 foo 今天似乎缺少。
我想知道根据标准 C++ 通过 (unsigned(?)) char* 检查“任何”内存位置是否合法。 any 位置是指程序内对象或数组(或数组内)的任何有效地址。
举例:
void passAnyObjectOrArrayOrSomethingElseValid(void* pObj) {
unsigned char* pMemory = static_cast<unsigned char*>(pObj)
MyTypeIdentifyier x = tryToFigureOutWhatThisIs(pMemory);
}
免责声明:这个问题纯粹是学术性的。我不打算把它放到生产代码中! legal 我的意思是如果根据标准它真的是legal,那就是它是否可以在所有实现中 100% 起作用。 (不只是在 x86 或一些常见的硬件上。)
子问题:static_cast 是从 void* 地址获取 char* 指针的正确工具吗?
【问题讨论】:
标签: c++ string pointers void-pointers memory-access