Re: Получить значение адреса в целую переменную и наоборот
От: Fwiffo Россия  
Дата: 01.11.09 14:33
Оценка: 3 (1)
Здравствуйте, SergeyLa, Вы писали:

SL>Есть ли способ преобразовать адрес в памяти, представленный void* (например 0xbff2c680), в целое число?


SL>Не в этом смысле:

SL>
SL>void f(void* p)
SL>{
SL>  int x = *((int*)p);
SL>}
SL>


SL>а именно получить в переменной x значение адреса памяти, хранящегося в переменной p — то есть 0xbff2c680. То есть после выполнения этой операции в x было бы значение 0xbff2c680.


long i = reinterpret_cast<long>( p );


SL>Если такой способ существует, то как осуществить обратную операцию — целочисленное значение преобразовать в адресс памяти, который можно разыменовывать и т.д.?


Аналогично

Строго говоря, это преобразование implementation defined, но "is intended to be unsurprising to those who know the addressing structure of the underlying machine.". Главное, чтобы размер целочисленного типа был не меньше указателя.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.