Могу ли я прочитать любую доступную для чтения допустимую область памяти с помощью (беззнакового) символа * в C ++?

Мой поиск foo, похоже, сегодня отсутствует.

Я хотел бы знать, законно в соответствии со стандартным C ++ проверять "любой" расположение в памяти через (беззнаковый (?)) символ *. Под любым местоположением я подразумеваю любой действительный адрес объекта или массива (или внутри массива) внутри программы.

В качестве примера:

void passAnyObjectOrArrayOrSomethingElseValid(void* pObj) {
   unsigned char* pMemory = static_cast<unsigned char*>(pObj)
   MyTypeIdentifyier x = tryToFigureOutWhatThisIs(pMemory);
}

Заявление об ограничении ответственности : Этот вопрос чисто академический. Я не собираюсь вводить это в производственный код! Под законным я имею в виду, действительно ли он законен в соответствии со стандартом, то есть если он будет работать на 100% всех реализаций. (Не только на x86 или другом обычном оборудовании.)

Подвопрос: Подходит ли static_cast для перехода от адреса void * к указателю char *?

5
задан casperOne 7 September 2012 в 19:29
поделиться