【发布时间】:2010-12-07 00:35:13
【问题描述】:
首先让我澄清一下,我现在非常熟悉 size_t 和 intptr_t 的定义,我不希望重复它们所完成的工作。
相反,我想知道以下内容。您是否知道任何平台,除了 x86/DOS(及其难以忍受的内存模型)在哪里进行转换
void* a = ...;
size_t b = (size_t)a;
实际上丢失了位或字节?
谢谢!
【问题讨论】:
-
你为什么要投一个指向 size_t 的指针???
-
附带说明,我什至无法想象这样的问题可能来自哪里。为什么你会想做这样的演员? 'size_t' 的大小和指针的大小是完全不相关的,所以很自然地假设这样的平台在一般情况下存在,而不管它们在现实中是否存在。
-
假设
size_t的大小和指针的大小相同可能不是一个好习惯,并且不应该用这个假设编写新代码,我可以看到这样的问题在哪里可能来自:遗留代码。我想那里有 很多 代码可以做出这种假设。就像有很多代码假定 int 或 long 是 32 位一样(不多也不少 - 这就是 MS 为 Win64 选择 LLP64 模型的原因)。有人(甚至可能是 Jonas)可能想确定是否值得花费时间和精力来主动更改遗留代码。 -
@MitchWheat 我也问过同样的问题:programmers.stackexchange.com/questions/294761/…
标签: c