【发布时间】:2017-12-28 21:52:45
【问题描述】:
在我的系统中,
sizeof(void*) = 8 bytes
所有指针类型的大小为 8 字节。
我有这个结构
struct element{void* value};
所以这个结构只是一个8字节的指针值。
由于所有类型的指针都有 8 个字节,我应该能够将任何类型变量的物理地址分配给这个 void* 值
还有,
sizeof(double) = 8 bytes;
问题是如何获取任何指针的物理地址作为双精度值,然后将此值分配给任何其他 8 字节指针。
这么说,
int i;
int *p = &i;
struct element e;
double phy_address = ?? // the 8 byte value of p (when we print it as %d)
/*now copy this 8 byte phy_address to 8 byte void pointer e.value. */
是否可以将其类型转换为 int* 或任何其他指针类型?它只是一个地址...
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
-
你可以试试
memcpy (&phy_address, &element.value, sizeof (void*))。但这很奇怪。 -
1:“物理地址”是错误的词。虚拟地址或逻辑地址正确。 2. 我知道 Double 在这里不是很好的数据类型选择。只是一个字节数组呢?如何转换为 8 字节数组 - 无需太多中间转换的最快方法。